1 本人环境
机器:dell T640服务器
系统:Ubuntu16.04 LTS
已安装显卡:2080Ti
已安装驱动版本:NVIDIA-Linux-x86_64-470.57.02.run
已安装cuda版本:cuda_10.0.130_410.48_linux.run
已安装cudnn版本:cudnn-10.0-linux-x64-v7.4.2.24.tgz
需求:与服务器无关,大家只要是Ubuntu16.04系统即可参考。由于目前需求,需要扩充一张3080Ti显卡,但全网关于2080Ti与3080Ti的兼容问题和安装问题并无查询结果,因此本人通过实践来证明2080Ti与3080Ti是否可以兼容?是否可以并行进行深度学习模型训练?是否会出现各种问题?现对实现结果进行介绍。
2 准备工作
由于3080Ti显卡支持的cuda版本必须为cuda11以上,但2080Ti支持的cuda版本为cuda10.0,因此想要两张卡并行训练,就需要更改系统原来安装的cuda10.0,因此第一步先将已安装的cuda和cudnn全部卸载。卸载cuda之前需要先卸载cudnn。对于cudnn和cuda卸载,网上已有很详细说明,这里不在过多说明。
3 驱动
在此将3080Ti显卡安装后,发现现在的驱动不能检测到3080Ti显卡,因此需要重新安装驱动,在此进入英伟达官网:NVIDIA DRIVERS Linux x64 (AMD64/EM64T) Display Driver 下载最新的驱动,截至目前驱动程序的版本为:470.86
安装显卡驱动前需禁用lightdm服务:
sudo service lightdm stop
关闭图形化界面后进入命令行模式:ctrl+alt+f1,并进入管理员账号,输入密码后登录到管理员用户。
进入到显卡驱动下载目录,执行:
sudo bash NVIDIA-Linux-x86_64-470.86.run
然后通过 nvidia-smi 命令即可查看到新添加的3080Ti显卡与之前安装的2080Ti显卡与对应的显存。
4 cuda11.0
在此下载cuda11.0,进入 https://developer.nvidia.com/cuda-downloads 下载cuda11.0,由于3080Ti需要cuda11.0,而2080Ti能否兼容cuda11.0还不得而知,只能通过实践了解。下载后的安装程序为:cuda_11.0.2_450.51.05_linux.run
同样在命令行模式下(ctrl+alt+f1)进入cuda下载目录,执行:
sudo bash cuda_11.0.2_450.51.05_linux.run --no-opengl-libs
添加 --no-opengl-libs 是为了不安装opengl库,防止安装之后进入图形化页面出现循环登录的问题。
安装过程中会首先出现输入accept,然后会出现提示安装的驱动、cuda,在此首先选择driver,然后点击enter,即取消安装driver,因为我们在第3步已经安装了驱动,在此不需要安装其推荐的驱动(如果安装了,3080TI就不能检测到)。然后选择install,并点击enter,安装完成会出现 installed 字样。
安装成功后使用如下命令开启lightdm服务
sudo service lightdm start
使用ctrl+alt+f7成功进入图形化页面,cuda安装完成。
Cuda安装成功后配置环境变量:
sudo gedit /etc/profile
进入文件编辑,在文件末尾添加:
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存/etc/profile文件,并重启电脑使得环境变量永久生效。
重启后:
cat /proc/driver/nvidia/version
使用如上命令验证驱动版本
nvcc -V
使用如上命令验证cuda版本
cuda安装失败提示:
“The program ‘nvcc’ is currently not installed.”
5 cudnn 安装
接下来需要安装cudnn,进入cuDNN Archive | NVIDIA Developer 选择对应cuda版本的cudnn版本,由于上面安装了cuda11.0,因此在此下载与cuda11.0匹配的cudnn,下载后的cudnn名称为:cudnn-11.0-linux-x64-v8.0.4.30.tgz
由于该文件为压缩包,因此需要在cudnn下载路径执行以下命令进行解压:
tar -xvf cudnn-11.0-linux-x64-v8.0.4.30.tgz
解压后会出现cuda文件夹,然后依次输入如下命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
完成cudnn与cuda的配置,接下来可以输入如下命令查看cudnn版本:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
新版cudnn查看版本的命令如上可能并不适用,在此进入cudnn解压后的cuda文件夹,然后进入include文件夹,会发现一个cuda_version.h的文件,然后执行如下命令即可查看cudnn版本:
cat cudnn_version.h | grep CUDNN_MAJOR -A 2
6 测试
至此,驱动、cuda、cudnn均已安装完成,接下来需要进行测试,最开始我使用了1.2版本的pytorch,发现在2080Ti显卡上可以正常使用(是个谜,明明已经安装了cuda11.0,而GPU版pytorch1.2对应cuda10.0),而在3080Ti上不可以使用,也就是显存不会增长。
考虑可能是cuda版本与pytorch版本不对应的问题,因此进入pytorch官网,下载cuda11.0对应的pytorch,在此我下载了pytorch1.7的GPU版本,具体安装命令进入官网复制即可。
最后惊讶的事情发生了,安装了GPU版的pytorch1.7,在2080Ti与3080Ti显卡上均可以进行深度学习,至此也解决了心中的疑问,2080TI可以使用cuda11.0!2080Ti与3080Ti可以并行使用!cuda11.0可以向下兼容2080Ti显卡!
7 需要注意的点
由于目前系统已经有了两张显卡,所以可以通过“cuda:0”选择第一张显卡,“cuda:1”使用第二张显卡,以此类推。
至此写下此文供同学们参考,如有问题请留言交流!
本文为作者原创,如有转载,请注明出处,侵权必追!