最近学习TensorFlow,没有GPU加速,卷积神经网络参数训练的速度实在很慢,电脑直接卡崩溃,因此决定安装GPU版本的TensorFlow,但前提得安装cuda和cudnn。安装过程中遇到过不少坑,Ubuntu重装好多次,好在最终给搞定了。
2019.7.16补充内容:如果你的系统版本是Ubuntu16.04.1以上的版本,请不要通过安装cuda时来安装NVIDIA显卡驱动!
2018.9.19补充内容:近期又尝试了Ubuntu16.04环境下安装cuda9.0和cudnn7.0,需要注意的是,系统内核的版本不能太高,否则会安装cuda失败,比如Ubuntu16.04.1自带内核版本为4.4,但16.04.5的就是4.15的。而cuda9.0只兼容4.4内核版本,所以,要么在装Ubuntu的时候直接装Ubuntu16的最低版本,要么把高版本的内核降级,但内核降级很不好操作。所以还是直接装Ubuntu16.04.1,直接安装此博客的后续安装方法一样成功安装cuda9.0,亲测多次有效。
一、安装前的准备工作(参考官方教程:点击打开链接)
1.检查GPU版本
lspci | grep -i nvidia
(备注:有些较早的GPU无法支持TensorFlow,可以通过查询你的GPU的计算能力,TensorFlow要求GPU的计算能力至少3.0以上。点击查询GPU计算能力:点击打开链接)。比如我的是GEFORCE GTX950M计算能力为5.0.
2.检查系统版本
uname -m && cat /etc/*release
(备注:一般的Linux操作系统都支持cuda。但对系统版本要求,比如cuda9.0就要求Ubuntu16。)
3.检查是否安装GCC编译器
gcc --version
(备注:安装cuda需要gcc编译器,用sudo apt-get install gcc安装)
4.检查是否有Correct Kernel Headers 和 Development Packages Installed
终端输入
uname -r
sudo apt-get install linux-headers-$(uname -r)
5.安装方式选择
建议选择runfile,反正我使用deb安装的方式没有成功。
下载cuda8.0安装包
(备注:cuda的版本和你使用的TensorFlow版本是有一定要求的。比如我想使用的是TensorFlow-1.3的GPU版本,要求至少安装cuda8.0以上版本,cudnn的版本至少为V6.0以上。如果安装cuda9.0,则需要Ubuntu16系统。)
下载地址:点击打开链接
6.禁用nouveau
防止Ubuntu系统出现重复登录的情况,在/etc/modprobe.d中创建文件blacklist-nouveau.conf
cd /etc/modprobe.d
sudo touch blacklist-nouveau.conf
sudo gedit blacklist-nouveau.conf
在文件中写入如下内容并保存
blacklist nouveau
options nouveau modeset=0
终端再输入以下命令,重新生成kernel initramfs
sudo update-initramfs -u
二、安装cuda
首先重启电脑,到登录界面后,按ctrl+alt+f1切换至命令行编辑模式
1.关闭NVIDIA X server
sudo service lightdm stop
2.安装cuda
切换至cuda安装文件的安装路径,然后终端输入:
sudo sh cuda_8.0.61_375.26_linux.run
(1)开始会出现一个licence文件,点击q,然后输入accept.之后就按照提示一步一步进行,但注意,如果你是双显卡,千万不要安装OPenGL ,请输入n表示不安装。其他的安装项选择yes即可。最后,安装成功会出现installed,如果失败显示filed。
特别注意:
期间提示是否同时安装NVIDIA显卡驱动时,如果你的系统版本是Ubuntu16.04.1 的话,可以选择yes,可以通过这个方式在安装cuda的同时把NVIDIA显卡驱动也给安装了。但是其他的系统版本请选择 no 。所以其他的系统版本还是用过NVIDIA官网下载驱动文件来安装显卡驱动。
(2)重启NVIDIA X server
sudo service lightdm start
(3)进入登录界面,登录系统,设置环境变量,终端输入:
gedit ~/.bashrc
然后再bashrc文件的末尾添加并保存:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
然后再终端source一下
source ~/.bashrc
(4)重启检查环境配置
终端输入:
env
查看是否有之前配置的环境路径。
(5)检测NVIDIA驱动版本以及CUDA版本
cat /proc/driver/nvidia/version
nvcc -V
分别会输出NVIDA驱动版本信息和CUDA版本信息。至此,cuda安装完成。
三、安装CUDNN
cudnn的安装相对简单。首先下载cudnn的安装文件,但需要注册一个NVIDIA账号才能下载。由于我准备使用的是TensorFlow1.3需要cudnn-v6.0版本。下载地址:点击打开链接。为方便下载,我把最近的几个版本上传百度网盘:
链接:https://pan.baidu.com/s/1yKLqpUrblp5AgZkbmyYtyw 密码:ced6
1.进入安装文件的存放路径,解压cudnn的安装文件。使用tar -xzvf 解压,如下第一条指令。解压后会出现一个cuda文件,进入这个文件夹,把相应的头文件和动态链接库拷贝至cuda的安装目录下,全部执行命令如下:
tar -xzvf cudnn-8.0-linux-x64-v6.0.tgz
cd cuda
sudo cp include/cudnn.h /usr/local/cuda-8.0/include/
sudo cp lib64/lib* /usr/local/cuda-8.0/lib64/
2.cd到/usr/local/cuda-8.0/lib64/文件夹下,建立软链接
sudo ln -sf libcudnn.so.6.0.20 libcudnn.so.6
sudo ln -sf libcudnn.so.6 libcudnn.so
其中的6.0.20为版本号,根据你下载的安装文件解压之后的文件版本修改成相应的版本号。
3.查看CUDNN的版本号
cat /usr/local/cuda-8.0/include/cudnn.h | grep CUDNN_MAJOR -A 2
至此cudnn安装完成。
四、卸载CUDA以及CUDNN
如果需要升级CUDA版本,我建议,先卸载,在重新安装吧,不然可能入坑。
(1)卸载CUDA
sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
(2)卸载CUDNN
sudo rm -rf /usr/local/cuda-8.0/lib64/libcudnn*
sudo rm -rf /usr/local/cuda-8.0/include/cudnn.h
删除原来的cudnn文件,如果需要安装,则按照上述安装方式重新安装即可。