博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu18.04LTS下cuda10.0+cudnn7.5+TensorFlow1.13环境搭建
阅读量:6393 次
发布时间:2019-06-23

本文共 5404 字,大约阅读时间需要 18 分钟。

目录

  • 前言
  • 开发环境一览
  • 显卡驱动安装
  • 下载驱动
  • 禁用nouveau
  • 安装驱动
  • 安装CUDA10.0
  • 第一个CUDA程序
  • 安装cudnn7.5
  • 安装TensorFlow1.13
  • 最后

前言

之前写过cuda环境的搭建文章, 这次干脆补全整个深度学习环境的搭建.


开发环境一览

  • CPU: Intel core i7 4700MQ
  • GPU: NVIDIA GT 750M
  • OS: UBUNTU 18.04.1LTS 64位

用指令看下英伟达显卡:

lspci | grep -I nvidia复制代码

当你搭建完成环境之后, 可以用代码查看硬件信息, 自己写或者官方的例子, 我的NVIDIA GT 750M信息显示如下图, 当然可以直接到英伟达官网查看显卡信息. 这张信息表目前看来就是些参数, 但是后续的并行算法很多时候是依据这些参数来设计的:


显卡驱动安装

千万不要用UBUNTU附加驱动里提供的显卡驱动!!! 千万不要用UBUNTU附加驱动里提供的显卡驱动!!! 千万不要用UBUNTU附加驱动里提供的显卡驱动!!! 一般来说, 你会遇到一些奇怪的问题, 当然, 锦鲤是不会出问题的(手动滑稽). 这是第一个坑点, 大体有三种展现方式:

  • 装完重启进不去系统, 卡住ubuntu加载页面;
  • 无限登录;
  • 装好了, 进入了系统, 然后输入nvidia-smi指令没有任何反应. 正常情况会弹出一张表, 如下所示:


下载驱动

行了, 来说说我的实操: 首先到下载显卡驱动, 比方说我是GT 750M, 操作系统是64位Linux, 我就找对应的版本进行下载.

删掉以往的驱动. 注意, 就算你啥都没装, 这步也是无害的.

sudo apt-get remove --purge nvidia*复制代码

更新并安装一些需要的库, 先装这么多, 之后装CUDA还有一波.

sudo apt-get updatesudo apt-get install dkms build-essential linux-headers-generic复制代码

禁用nouveau

打开blacklist.conf, 在最后加入禁用nouveau的设置, 这是一个开源驱动, 如图所示:

sudo vim /etc/modprobe.d/blacklist.conf复制代码
blacklist nouveaublacklist lbm-nouveauoptions nouveau modeset=0alias nouveau offalias lbm-nouveau off复制代码

禁用nouveau内核模块

echo options nouveau modeset=0sudo update-initramfs -u复制代码

重启. 如果运行如下指令没用打印出任何内容, 恭喜你, 禁用nouveau成功了.

lsmod | grep nouveau复制代码

安装驱动

~~来到tty1(快捷键ctrl + alt + f1,如果没反应就f1-f7一个个试, 不同Linux, 按键会略有不同). 运行如下指令关闭图形界面.~~我在ubuntu18.04.1LTS是ctrl + alt + f3-f6. 然后注意, 以下指令适用于16.04及以前.

sudo service lightdm stop复制代码

这不适用于18.04. 18.04可以如下操作:

  • 关闭用户图形界面
sudo systemctl set-default multi-user.targetsudo reboot复制代码
  • 开启用户图形界面
sudo systemctl set-default graphical.targetsudo reboot复制代码

安装驱动, 注意有坑, 一定要加**-no-opengl-files**, 不加这个就算安装成功, 也会出现无限登录问题. 但是在最近几次安装环境的时候, 例如系统是18.04, 驱动是418.43, 这个参数变得无效. 所以如果不能开启安装页面, 可以去掉此参数.

sudo chmod u+x NVIDIA-Linux-x86_64-390.87.run sudo ./NVIDIA-Linux-x86_64-390.87.run –no-opengl-files复制代码

如果你已经装了, 但是没有加**-no-opengl-files**, 按照如下操作可以救一下. 或者你安装失败了, 有些库缺少了之类的, 可以用以下命令卸载干净重来.

sudo ./NVIDIA-Linux-x86_64-390.87.run –uninstall复制代码

顺带一提, 可能会弹出Unable to find a suitable destination to install 32-bit compatibility libraries on Ubuntu 18.04 Bionic Beaver Linux的bug, 然后你需要下面三条指令:

sudo dpkg --add-architecture i386sudo apt updatesudo apt install libc6:i386复制代码

并且中途的选项都选no比较好, 指不定卡死在安装哪个奇怪的东西上.

重启. 用nvidia-smi指令试一下, 如果看到类似下图, 恭喜你, 驱动安装成功. 或者看到附加驱动显示继续使用手动安装的驱动.

安装之后在软件和更新当中会显示如下图:


安装CUDA10.0

先来补库.

sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev复制代码

到下载要的CUDA版本, 我这里是, 下载runfile(local)版本, 如下图所示:

md5检测一下, 不合格要重新下载. 下图是我的检测结果:

md5sum cuda_10.0.130_410.48_linux.run复制代码

再次关闭图形界面

sudo service lightdm stop复制代码

这不适用于18.04. 18.04可以如下操作:

  • 关闭用户图形界面
sudo systemctl set-default multi-user.targetsudo reboot复制代码
  • 开启用户图形界面
sudo systemctl set-default graphical.targetsudo reboot复制代码

安装时候依旧要加**-no-opengl-files**参数, 之后一路默认就好. 最好不要安装与OpenGL相关的.

sudo sh cuda_10.0.130_410.48_linux.run –no-opengl-files复制代码

然后会看到三个installed.

添加环境变量

vim ~/.bashrc复制代码

最后写入:

export CUDA_HOME=/usr/local/cudaexport PATH=$PATH:$CUDA_HOME/binexport LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}复制代码

保存退出, 并其生效.

source ~/.bashrc复制代码

运行一些检测命令, 如果和我显示的类似, 恭喜你, 环境配置完成.

cat /proc/driver/nvidia/version复制代码
nvcc -V复制代码

可以跑一下英伟达提供的学习案例:


第一个CUDA程序

之前在开发环境部分展示过一个小栗子, 来看看具体代码吧~

vim Device.cu复制代码
#include 
int main() { int nDevices; cudaGetDeviceCount(&nDevices); for (int i = 0; i < nDevices; i++) { cudaDeviceProp prop; cudaGetDeviceProperties(&prop, i); printf("Device Num: %d\n", i); printf("Device name: %s\n", prop.name); printf("Device SM Num: %d\n", prop.multiProcessorCount); printf("Share Mem Per Block: %.2fKB\n", prop.sharedMemPerBlock / 1024.0); printf("Max Thread Per Block: %d\n", prop.maxThreadsPerBlock); printf("Memory Clock Rate (KHz): %d\n", prop.memoryClockRate); printf("Memory Bus Width (bits): %d\n", prop.memoryBusWidth); printf("Peak Memory Bandwidth (GB/s): %.2f\n\n", 2.0 * prop.memoryClockRate * (prop.memoryBusWidth / 8) / 1.0e6); } return 0;}复制代码
nvcc Device.cu -o Device.o复制代码
./Device.o复制代码


安装cudnn7.5

首先到去下载勾选的4个:

然后解压tgz包, 复制文件到cuda环境, 接着安装deb包.

tar -zxvf cudnn-10.0-linux-x64-v7.5.0.56.tgzsudo cp cuda/include/cudnn.h /usr/local/cuda/includesudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*sudo dpkg -i libcudnn7_7.5.0.56-1+cuda10.0_amd64.debsudo dpkg -i libcudnn7-dev_7.5.0.56-1+cuda10.0_amd64.debsudo dpkg -i libcudnn7-doc_7.5.0.56-1+cuda10.0_amd64.deb复制代码

这样就完成安装了, 用个小栗子来测试下吧, 结果如图示:

cp -r /usr/src/cudnn_samples_v7/ ~cd ~/cudnn_samples_v7/mnistCUDNNmake clean && make./mnistCUDNN复制代码


安装TensorFlow1.13

很遗憾我的GPU算力只有3.0, 最低要求是3.5, 不过这里还是安装一下tf, 当做练手了.

sudo apt-get install python-pip python3-pip python-devsudo pip3 install tensorflow-gpu复制代码

可以用如下python代码查询版本号和路径:

#!/usr/bin/python3import tensorflow as tfprint (tf.__version__)print (tf.__path__)复制代码

最后我给出一个测试例子, 但是很遗憾, 我是无法运行的.

#!/usr/bin/python3import tensorflow as tf# Just disables the warning, doesn't enable AVX/FMAimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'hello = tf.constant("Hello, tf!")sess = tf.Session()printf (sess.run(hello))复制代码


最后

喜欢记得点赞哦, 有意见或者建议评论区见~


转载于:https://juejin.im/post/5c83abb4f265da2da67c6173

你可能感兴趣的文章
mysql性能优化-慢查询分析、优化索引和配置
查看>>
图解分布式一致性协议Paxos
查看>>
Jedis与Redisson选型对比
查看>>
MongoDB学习笔记(查询)
查看>>
freemarker自定义标签的写法和使用
查看>>
使用Gitlab CI进行持续集成
查看>>
Win32编程基本概念
查看>>
×××灯式样的站点链接说明,链接提示
查看>>
Linux下动态IP和静态IP的设置方法
查看>>
SUSE配置网关
查看>>
java中获取字母和数字的组合
查看>>
8-3 泛型
查看>>
你是“职业”软件开发吗?——书评《浮现式设计-专业软件开发的演进本质》...
查看>>
iOS 多线程 之 GCD(大中枢派发)(二)
查看>>
开源项目 log4android 使用方式详解
查看>>
ssh命令详解
查看>>
C# 中字符串转换成日期
查看>>
垃圾短信相关用户细分方案
查看>>
免费的Windows系统工具
查看>>
脚本:将git项目下载到本地并启动
查看>>