cuda的安装选项中其实包含了nvidia驱动的安装选项,不过网上好多资料都说不要再cuda中勾选nvidia驱动,而要自己去nvidia官网自己查好型号下载安装文件,手动安装nvidia驱动。
其实主要都是担心不同版本兼容性问题,我这里忍不住还是想尝试一下用cuda中的nvidia驱动会出现什么问题。
nvidia-smi
执行这条命令,如果有以下信息说明已经有nvidia驱动了,结束。
如果没有以下信息,说明还没有nvidia驱动,需要安装。
安装Nvidia显卡驱动和系统自带的nouveau驱动会有冲突,所以要禁用nouveau。
lsmod | grep nouveau
执行这条命令,如果有信息,说明nouveau还在运行着,要禁用。
禁用方法:
sudo vi /etc/modprobe.d/blacklist.conf
在文本最后添加如下内容:
blacklist nouveau
options nouveau modeset=0
更新一下:
sudo update-initramfs -u
重启:
reboot
再次查看是否已经禁用:
lsmod | grep nouveau
执行这条命令,发现没有任何信息输出了,说明已经禁用了。
sudo apt install build-essential
sudo apt-get remove nvidia-*
sudo apt-get autoremove
或者:
sudo apt-get --purge remove nvidia-*
sudo ./NVIDIA-Linux-x86_64-410.57.run -uninstall
sudo update-initramfs -u
sudo reboot now
sudo apt-get update
ubuntu-drivers devices
可以看到recommended的是nvidia-driver-450-server
这里可以我没有直接用命令(sudo apt-get install nvidia-settings nvidia-driver-430 nvidia-prime 或者 sudo ubuntu-drivers autoinstall)安装该驱动,因为看别人才那么多坑,总觉得事情没这么简单,哈哈,而且我也想试试用cuda中的nvidia驱动安装选项来安装驱动,所以这条命令我就看看而已。
参考这篇博客:Ubuntu18.04安装nvidia显卡驱动
cuda官网
如果是想搭环境跑深度学习的,尤其是pytorch,目前支持到cuda10.2,高于cuda10.2版本的话,使用pytorch时就不能用cuda了,所以这种情况下建议先查查pytorch的匹配cuda版本,比如下图所示pytorch和cuda适配版本:
不然像我刚开始都捡最新的cuda11.1安装,装好之后才发现pytorch这个坑,然后又一阵折腾卸载cuda11.1、卸载nvidia驱动、卸载cudnn8.0(卸载参考了这篇文章ubuntu18.04卸载cuda10.1,安装cuda10.0又双踩坑)。
cuda10.2下载:
cuda10.2安装:
执行xxxxxxx.run的过程中,会有选项提示,第一次选择“accept”,然后会提示nvidia driver、cuda toolkit相关的信息,就直接选"Install"继续安装,就是这里将进行nvidia驱动的自动匹配版本和安装。
安装失败,报错log里显示驱动440安装失败:
解决方法:关闭x服务Ubuntu18.04 关闭和开启图形用户界面。
根据上述提示信息,需要配置环境变量:
sudo vi ~/.bashrc
打开文本后,在最后添加如下信息,具体因人而异,要和上图红框中提示信息一致:
export PATH="/usr/local/cuda-11.1/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH"
使其生效:
source ~/.bashrc
验证cuda是否成功安装:
cd /usr/local/cuda-10.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
cat /proc/driver/nvidia/version
nvcc --version
按照商住步骤完成后,再次查看nvidia-smi信息,可以看到已经安装成功。
cuDNN下载
cuDNN安装官方帮助文档
cudnn的版本也是参考了pytorch的常用配置,选用cudnn7.6.5。
推荐这种方式吧,用Deb文件安装的话,在编译caffe时,我不太确定cuda的路径,资料也比较少。
下载上图中的tar文件,下载后发现是.solitairetheme8后缀名的文件,将其重命名为.tgz, 然后使用tar -zxvf file.tgz命令解压即可。(
https://blog.csdn.net/littlehaes/article/details/103202156)
Deb安装的优点时,不用手动拷贝cudnn相关的头文件到/usr/local/目录,但也导致我在编caffe时不知道怎么配cuda的路径,所以我建议用方法1安装吧。
下载上图中的Deb文件,3个都下载。
参考cuDNN安装官方帮助文档的描述:
依次安装:
sudo dpkg -i libcudnn7_xxx +cuda10.2_amd64.deb
sudo dpkg -i libcudnn7-xxx +cuda10.2_amd64.deb
sudo dpkg -i libcudnn7-samples_xxx +cuda10.2_amd64.deb
参考cuDNN安装官方帮助文档的描述:
按照上图命令,跑了一个测试demo是minist手写体识别的例子,结果显示test pass,成功。
注意:建议要耐心看看cuDNN安装官方帮助文档,网上的资料可能版本不同,安装、验证方式也会有差异,官方文档的更新和cuDNN版本是同步的,是最可靠的,而且还有关于升级cuDNN版本的方法等。
如果是方法1 tar文件安装的那么用这条命令可以查看:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
如果是cudnn8.0及以上,版本信息在cudnn_version.h中,可以用下面的命令查看:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
如果是方法2 Deb文件安装的,那么用下面的命令查看:
网上说用下面这条查看cudnn版本信息,我试了不行,在/usr/local/cuda/include/目录下找不到这个cudnn.h头文件:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
感觉奇怪上面cudnn的验证都过了说明已经安装成功了,怎么会查不到版本信息呢?找了一下cudnn.h这个头文件确实没有在/usr/local/cuda/include/目录下,而是在/usr/include/目录下。
于是就试了一下这条命令:
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
结果是没有任何打印。
打开这个cudnn.h看了一下里面确实没有版本的定义,不过它包含了一个定义版本的头文件cudnn_version.h,于是又尝试了下面这条命令:
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2