从事深度学习无论是tensorflow还是caffe都需要安装cuda和cudnn这2个显卡支持的库。cuda安装容易失败,为了避免安装失败,请大家一定按照官方指导文件流程进行操作。下面也给出我的一些理解,给大家讲解一些该注意的地方,增加大家的理解。
一、支持框架验证
必须强调一下,一定要检查自己的系统版本、显卡、gcc、Linux内核是否支持cuda10.1。下图是支持cuda10.1的系统要求。使用以下指令查询自己的显卡、gcc、Linux内核。
$ lspci | grep -i nvidia
$ uname -m && cat / etc / * release
$ gcc --version
$ uname -r
二、安装
(1)执行上述框架验证,完成相应操作
(2)下载cuda toolkit,在下面的网址中进行下载:
https://developer.nvidia.com/cuda-10.1-download-archive-base
按照自己的版本选择,下面是我根据自己的电脑系统选择的,其中installer type(安装类型)runfile是整个安装包包含了所有的库,适用本地系统。deb是另一种安装形式,也适合本地系统。后面的,作为学习者,不常用,具体的细节可以去官方指导文件阅读。我推荐大家选择runfile文件形式安装cuda。本文也是按照这个文件按照的。
(3)禁用Nouveau库驱动
创建blacklist-nouveau.conf 黑名单禁用文件,,我是直接使用 vim创建编辑,在安装的过程中会自动创建,但可能不生效,所以可以自己创建
$ sudo vim /usr/lib/modprobe.d/blacklist-nouveau.conf
在blacklist-nouveau.conf里面写入下面代码
$ blacklist nouveau
$ options nouveau modeset=0
重新生成内核initramfs:
$ sudo update-initramfs -u
如果不放心,那么来个狠的。把nouveau.ko 改为 .org ,隐藏起来。
$mv/lib/modules/*******-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko/lib/modules/*******-generic/kernel/drivers/gpu/drm/nouveau/http://nouveau.ko.org
$ update-initramfs -u
(4)重启reboot
注意事项:
1)当系统至grub引导项(即选择起用哪个系统),按住e进入 引导加载程序文档,在splash后,插入 :
$ 3 nomodeset
运行级别3,无显卡启动。
由于尚未安装NVIDIA驱动程序,文本终端可能无法正确显示。暂时将“nomodeset”添加到系统的内核引导参数可能会解决此问题。需要重新启动才能完全卸载Nouveau驱动程序并阻止加载图形界面。加载Nouveau驱动程序或图形界面处于活动状态时,无法安装CUDA驱动程序。
2)进入命令行界面
(5)卸载所有显卡驱动
一定要卸载所有驱动nvidia* ,不管是你自己安装的驱动,还是带着驱动。还是统统卸载吧。我第一安装的时候就没有停用自己的nvidia驱动,虽然不是nouveau驱动,但是,GPU设备和Linux内核不通信。以下是相关指令
$ sudo service lightdm stop
$ lsmod | grep nouveau
$ sudo apt-get remove --purge nvidia*
(6)安装cuda 10.1
注意事项:整个系统最好是英文系统,因为切换至纯命令行界面,有可能出现乱码,或者不显示。
1)找到你下载的cuda_10.1.105_418.39_linux.run,一般位于Download文件夹内
2)运行安装包,默认安装模式。去掉 --silent 即可自己选择按照内容。
$ sudo sh cuda_10.1.168_418.67_linux.run --silent
3)启用GPU产生 xconfig,便于修改分辨率等。也可以不用这个步骤,视情况而定,如果你的电脑是标准的,就是默认的。如果是多个GPU,就需要打开xconfig文件修改里面的内容。可以参照这个文件的说明具体操作。
$ sudo nvidia-xconfig
(7)重启系统reboot
(8)验证节点设备 是否产生成功
可以在路径 /dev/nvidia* 查看所有包含nvidia名字文件,如果没有,需要创建脚本运行以产生。如果运行后没有nvidia-num文件。请查看是否有/proc/devices文件。
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
(9)添加环境变量
建议 vim 进入profile,需要添加两个路径
$ vim ~/.bashrc
注意:NsightCompute-2019.3是你自己的cuda文件包含的例子,2019.3会变化。cd usr/local/cuda-10.1/进去,看一下自己的cuda例子是多少。是2019.1还是 2019.3
$ export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.3${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
刷新profile:$ source ~/.bashrc
重启一下最好。
三、验证cuda是否安装成功
(1)验证驱动,是否是nvidia驱动
$ cat /proc/driver/nvidia/version
(2)cuda版本查询
$ nvcc --V
会输出 10.1版本的信息
(3)实例编译
$ cd ~/NVIDIA_CUDA-10.1_Samples
进入后
$ make
如果报错,查看报错内容,根据提示解决即可。如果没有错误,会一直编译,十几分钟编译完成。生成的二进制文件将放在〜/ NVIDIA_CUDA- 10.1 _Samples / bin。
编译后:$ cd ~/NVIDIA_CUDA-10.1_Samples/bin/x86_64/linux/release
运行:$ ./deviceQuery,会看到以下信息
运行:$ ./bandwidthTest
恭喜你,完成安装!!!!!!!!
如果错误:出现以下信息。啥也别说了,一定是驱动安装错了,重来吧。切记要完全卸载nvidia驱动和nouveau驱动。
$ ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 999
-> unknown error
Result = FAIL