摘要
Ubuntu18.04安装Tensorflow-gpu,坑成马。
不想踩坑?有缘千里来相会,这篇文章将梳理出作者遇到的所有天坑。
对于下列问题,你可以在本文中找到答案
- 安装Nvidia驱动时提示显卡被占用?
- 安装Nvidia驱动时提示gcc版本太高?
- 安装Nvidia驱动的正确姿势?
- 驱动装炸了,卸载Nvidia驱动的正确姿势?
- CUDA安装与配置的正确姿势?
- cnDNN安装与配置的正确姿势?
前排提醒!!!
如果Ubuntu提示系统升级,千万不要点!千万不要点!千万不要点!一键爆炸了解一下。
正文
组件版本:
Operating System : Unbuntu 18.04 LTS
Nvidia Graphic Card : Nvidia 940MX
Nvidia Driver: NVIDIA-Linux-x86_64-410.78
CUDA : CUDA 9.0
cuDNN : cuDNN 7.1.4
Tensorflow : 1.5.0 GPU Version
请保证你的系统是纯净的,安装过后没有进行过任何多余操作
-
禁用预安装的nouveau驱动
用下面的指令创建新文件blacklist-nouveau.conf*
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
并添加如下内容
blacklist nouveau options nouveau modeset=0
Okay. 关闭文件,执行下列命令,重启。
sudo update-initramfs -u sudo reboot
重启完成后,用下面这个命令,检验nouveau是否已经被禁用了。
lspci | grep nouveau
如果被禁用了,那么terminal里不会输出任何东西。
-
安装 gcc 6
从CUDA 4.1版本开始,现在支持gcc 4.5。gcc 4.6和4.7不受支持
从CUDA 5.0版本开始,现在支持gcc 4.6。gcc 4.7不受支持
从CUDA 6.0版本开始,现在支持gcc 4.7
从CUDA 7.0版本开始,完全支持gcc 4.8,在Ubuntu 14.04和Fedora 21上支持4.9
从CUDA 7.5版开始,完全支持gcc 4.8,在Ubuntu 14.04和Fedora 21上支持4.9
从CUDA 8版本开始,Ubuntu 16.06和Fedora 23完全支持gcc 5.3
从CUDA 9版本开始,Ubuntu 16.04,Ubuntu 17.04和Fedora 25完全支持gcc 6
CUDA 9在CUDA中不支持gcc 7作者执笔写这篇文章时,Ubuntu18.04 LTS自带的gcc版本是7.3.0。CUDA9.0是不支持gcc 7的。因此你需要安装一个低版本的gcc。在这里我选用gcc 6,下列命令可用于安装gcc 6。
sudo apt-get install gcc-6 sudo apt-get install g++-6
建立 soft link :
sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++
此时你应该已经可以在terminal里调用gcc了,用下面的命令进行测试。
gcc --version
-
安装Nvidia驱动
根据你显卡的型号,去Nvidia官网下载对应驱动安装程序的runfile版本。
按
Ctrl
+Alt
+F3
,进入文本命令行。登录,使用下面的两行指令终止GUI操作。对于Ubuntu18.04来说,第二行应该管用。sudo service lightdm stop sudo service gdm3 stop
用如下指令运行.run文件
sudo $DRIVER_DIR/NVIDIA-Linux-x86_64-410.78.run
如果你发现不能运行,在运行之前,尝试用先用下面的指令
chmod u+x $DRIVER_DIR/NVIDIA-Linux-x86_64-410.78.run
你可能会发现安装程序会提示你缺少很多依赖,例如
make
。按照安装程序的指示,用apt
把该装的都装了。等所有依赖都安装完毕,你应该就可以顺利安装驱动了。期间你可能会遇到各种各样的提示框,说的还很吓人。在下也不懂。选YES就是了,反正是纯净系统,大不了重头再来。安装完成后,用下面的指令测试是否安装成功。
nvidia-smi
-
安装 CUDA 9.0
根据你所要使用的Tensorflow版本选择对应的CUDA的runfile安装程序下载。
tensorflow-gpu v1.9.0 | cuda9.0 | cuDNN7.1.4可行 | 备注:7.0.4/ 7.0.5/ 7.1.2不明确
tensorflow-gpu v1.8.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.7.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.6.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.5.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
tensorflow-gpu v1.4.0 | cuda8.0 | cuDNN 6.0 | 备注:6.0正常使用, 7.0.5不能用,5.1未知
tensorflow-gpu v1.3.0 | cuda8.0 | cuDNN 6.0 | 备注:6.0正常使用, 7.0.5不能用,5.1未知
tensorflow-gpu v1.2.0 | cuda8.0 | cuDNN 5.1 | 备注:5.1正常使用, 6.0/ 7.0.5 未知
tensorflow-gpu v1.1.0 | cuda8.0 | cuDNN 5.1 | 备注:5.1正常使用, 6.0/ 7.0.5 未知Ref: https://blog.csdn.net/lifuxian1994/article/details/81103530
运行
sudo $CUDA_DIR/cuda_9.0.176_384.81_linux.run
开头的协议太长,按空格加速跳过。之后你将进行一系列的选择,除了问你 “是否要安装CUDA自带的Nvidia驱动程序” 选NO之外, 其余全选YES。我们刚刚自己安装了驱动,不用它的。
顺利安装完成后,用下列指令将CUDA路径加入系统变量
export PATH=$PATH:/usr/local/cuda-9.0/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
上面的指令只能在当前terminal有用。如果想永久设置,打开下面的文件,并把上面两行放到文件的最后。
~/.bashrc
用下面的指令测试CUDA是否安装成功
nvcc --version
你应该可以得到nvcc编译器对应的版本信息
-
安装Tensorflow-gpu
我们使用
pip
安装Tensorflow-gpu。pip
应该没有随系统安装,没有pip的先用下面的指令安装pip。sudo apt install python-pip
然后执行下面的指令安装tensorflow-gpu 1.5.0
pip install tensorflow-gpu==1.5.0
如果你不加 '==1.5.0',将默认安装最新版本(本人执笔时是1.12.0)
安装完成后,用下列指令测试tensorflow是否安装成功。pip list
你应当可以看到tensorflow-gpu 1.5.0在列表之中。但现在距离安装完成还差一步之遥。
-
安装 cuDNN
下载cuDNN的Ubuntu版本的Runtime安装程序(.deb格式文件)。下载完成后,双击即可安装。
现在,万事俱备,你可以用下面的python程序测试Tensorflow-gpu版本是否被成功安装。
import tensorflow as tf sess = tf.Session() a = tf.constant(1) b = tf.constant(2) print(sess.run(a+b))
Expected output
3
If 3 is printed on your screen, congratulations! You are ready to go.