笔者学校服务器的系统是Ubuntu 16.04 ,显卡GeForce RTX 2080Ti。
想将cuda升级到11.3,以及一系列的cudnn+驱动的升级
查看Ubuntu的显卡版本
lspci | grep -i vga
只返回了16进制码,查询地址:http://pci-ids.ucw.cz/mods/PC/10de/2204
1.1 找到合适自己的版本
打开上述官网地址,按键盘上的F12,点击Console或者控制台
然后在下方小箭头处 ,粘贴下面的代码后(可以查看最新往前200个旧版本),按回车
SystemScanner.prototype.DriverSearch = function(psid, pfid, osID, langCode, whql, beta, dltype, numresults ) {numresults=200;this.scannerStatusUpdate(GFE_SERVER_CONNECTING);theScanner.scannedDevice.downloadInfo=new Object();var parameters='psid='+psid;parameters+='&pfid='+pfid;parameters+='&osID='+osID;parameters+='&languageCode='+langCode;parameters+='&beta='+beta;parameters+='&isWHQL='+whql;parameters+="&dltype="+dltype;parameters+="&sort1=0";parameters+="&numberOfResults="+numresults;var requestUrl=this.driverManualLookupUrl+parameters;this.driversLogUIEvent("warn","SUID:"+this.tracker.scanID+" BEGIN DriverSearch requestUrl:"+requestUrl);this.debugTrace(requestUrl);jQuery.ajax({url:requestUrl,async:false,type:'get',success:function(response){try{theScanner.debugTrace("The Driver Lookup Service Returned:\n\n("+response+")");if(response.length>0){theScanner.resetResults();var driverLookupJsonObj='('+response+')';theScanner.resultsList=new Object();theScanner.resultsList=eval(driverLookupJsonObj)}if(theScanner.resultsList.Success==0){theScanner.scannerStatus="No driver available"}else{theScanner.scannerStatus="Results Ready"}}catch(e){this.driversLogUIEvent("error"," FAIL catch DriverSearch");theScanner.resetResults();theScanner.scannerStatus="No driver available"}},error:function(response){theScanner.resetResults();theScanner.scannerStatus="AJAX Call failed"}});this.driversLogUIEvent("warn","SUID:"+this.tracker.scanID+" END DriverSearch requestUrl:"+requestUrl);}
此时,可以看到更多旧版本的驱动,根据想要安装的CUDA的版本选择驱动的版本,不要太新了
版本对应
1.2 找到对应的版本,下载安装包:
如果和笔者需要的版本一致的这里附上下载链接
链接:https://pan.baidu.com/s/1yStk0RVw0PLW7jmqqSkPbQ
提取码:b2c4
可以看到选定版本支持服务器的配置
1.3 卸载现有驱动,重新安装
sudo apt-get --purge remove nvidia-*
sudo apt-get purge nvidia*
sudo apt-get purge libnvidia*
直到下面的命令不输出任何内容,则卸载成功
sudo dpkg --list | grep nvidia-*
若仍然有输出,且输出中包含“rc”
则说明‘被移除/卸载,但它的配置文件仍然存在’,终端输入如下命令,#清理dpkg的列表中有“rc”状态的软件包
sudo dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
# 再次输入
sudo dpkg --list | grep nvidia-*
不再输出任何信息,接下来执行安装命令
# 进入安装包文件夹
sudo bash NVIDIA-Linux-x86_64-470.57.02.run -no-opengl-files -no-x-check
其中添加-no-opengl-files -no-x-check
是为了解决如下问题
网上找了很多方法,比如禁用指令sudo service lightdm stop
,安装后在启用sudo service lightdm start
,都未能解决上述问题。所以可以直接尝试上述的方法。
接下来开始继续安装(笔者只留下部分截图,没有截图的用文字描述):
选择 yes 继续
选择 No 继续
选择 No 继续
选择Yes 继续
nvidia-smi
目前官网已经升级到cuda11.4,但是没有Ubuntu16.04的系统,因此找到之前发布的版本:
选择匹配的版本
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run
sudo sh cuda_11.3.1_465.19.01_linux.run
输入accept
一定要输入no!!!!!
yes
cd /usr/local/
ls
一定要与上面的CUDA进行匹配,cudnn的下载是需要注册登录的。
进入官网,选择指定的版本。
下载之后进入压缩包所在文件夹,执行解压指令:
tar zxvf cudnn-11.3-linux-x64-v8.2.1.32.tgz
在路径中生成cuda文件夹,然后复制 lib64 和 include 文件夹到 /usr/local/cuda-11.3,命令如下:
sudo cp cuda/include/cudnn.h /usr/local/cuda-11.3/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.3/lib64
sudo chmod a+r /usr/local/cuda-11.3/include/cudnn.h /usr/local/cuda-11.3/lib64/libcudnn*
nvcc -V