运行环境: Ubuntu 16.04
踩坑记录
官网下载 https://developer.nvidia.com/cuda-90-download-archive 下载 cuda_9.0.176_384.81_linux.run 文件
关闭 X server
1
$ sudo service lightdm stop
之后用ctrl+alt+F1 ~ F6,打开tty1 ~ 6, 登陆后运行该文件
1
$ sudo sh cuda_9.0.176_384.81_linux.run
一直按enter后选择选项
之后可能会报错:
1
The driver installation is unable to locate the kernel source
一般出现这种问题的原因是与CUDA官方要求的版本不符
CUDA9.0 官方支持的Ubuntu16.04的内核版本是4.4.0系列
所以我们更换内核版本
使用以下命令可以查看和安装内核版本
1
$ sudo apt-cache search linux|grep linux-image
可以直接安装4.4.0系列的一款版本
1
$ sudo apt-get install linux-image-4.4.0.77-generic linux-headers-4.4.0.77-generic
之后需要更换系统内核
Ubuntu如何更换系统内核
首先,查询可更换的内核序号
1
$ cat /boot/grub/grub.cfg
查询已经安装的内核和内核的序号,找到文件的menuentry
仔细观察menuentry底下还有一个submenu, submenu下面包含带有缩进的menutery
以下是计数规则:
第一个menuentry的序号是0,第二个submenu的序号是1, 以此类推,这是前面的序号,之后在1的submenu中,第一个menuentry的序号是0,第二个是1,以此类推
记住这几个编号
修改grub更换内核
1
$ sudo vi /etc/default/grub
如果没有使用grub修改过内核,第一行是
1
GRUB_DEFAULT=0
0是默认kernel
我们要做的就是把GRUB_DEFAULT=0改成
1
GRUB_DEFAULT="1 >9"
其中第一个数字1表示前面的序列编号,因为submenu是1
其中中间的空格与大于号是不能省略的,第二个数字9表示在submenu中的序号是第9(从0开始数的)
之后更新内核,重启
1
2
$ sudo update-grub
$ sudo reboot
这里更换内核为4.4.0的时候可能会导致分辨率出现问题
查看内核是否更换
1
$ uname -r
之后再次用刚才的操作关闭图形界面去安装driver
会将nvidia-driver
以及nvidia-cuda-tookit
安装成功
将cuda相关路径加入到环境变量中
1
$ vi ~/.bashrc
添加下面的
1
2
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
使环境变量生效
1
$ source ~/.bashrc
使用nvidia-smi 验证nvidia-driver是否安装成功
重启使用nvcc -V 验证nvidia-cuda-toolkit是否安装成功
上面这种安装完之后再把内核切换为原来的版本4.15.0系列,可能会导致nvidia-smi产生问题,所以其实是存在问题,需要安装最新的nvidia-driver的版本才行
而且这样的情况下会导致安装完成后,无法正常打开ubuntu图形界面
安装cuDNN
(一般可以手动看一下cuda-9.0相应目录里面有没有libcudnn相关的动态链接库,如果有,说明安装的时候可能有自带)
cuDNN是cuda用于加速神经网络计算的动态链接库
一般cuda9.0比较配cudnn7.5
去nvidia官网下载cudnn的源码包https://developer.nvidia.com/cudnn
注意选择的文件linux的源码压缩包
之后下载后解压该文件
1
$ tar -zxvf cudnn-9.0-linux-x64-v7.5.0.56.tgz
切换到刚刚解压出来的文件夹
1
$ cd cuda
复制文件,之后设置权限
1
2
3
4
$ sudo cp include/cudnn.h /usr/local/cuda/include/
$ sudo cp lib64/lib* /usr/local/cuda/lib64/
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
更新软链接
1
2
3
4
5
$ cd /usr/local/cuda/lib64/
$ sudo rm -rf libcudnn.so libcudnn.so.7
$ sudo ln -s libcudnn.so.7.5.0 libcudnn.so.7
$ sudo ln -s libcudnn.so.7 libcudnn.so
$ sudo ldconfig -v # 立即生效
重启后再输入nvcc -V验证原来的cuda还能不能用