2080Ti与3080Ti单机多卡安装与并行训练

news/2024/11/24 2:17:00/

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”使用第二张显卡,以此类推。

至此写下此文供同学们参考,如有问题请留言交流!

本文为作者原创,如有转载,请注明出处,侵权必追!


http://www.ppmy.cn/news/201032.html

相关文章

CSS时间轴特效

效果图&#xff1a; html内容&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

html动态时间戳,纯时间

用的是input标签&#xff0c;可以用在网页后面时间戳&#xff0c;比如http://example.com/?timestamp19700101235959 html代码 <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-sc…

css 动画如何保持最终的状态

这个东西我也想了很久我是这样解决的 1 设置的时候css 要设置成最终的样式 2 在动画初始值的时候位置调到最开始的时候&#xff0c;颜色什么的&#xff0c;能改变的都设置成你想要的模式 然后往最后的目标前进&#xff0c;不过这种的话最好使用过度动画&#xff0c;过度动画…

JavaScript,css时间计时器

JavaScript&#xff0c;css时间计时器 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style type"text/css">#time{width: 600px;height: 200px;font-size: 60px;text-align: center;mar…

轻量级的JavaScript时间库(Moment.js)

Moment.js是一个轻量级的JavaScript时间库&#xff0c;方便对时间的操作&#xff0c;提高开发效率 安装&#xff1a;npm install moment 引入&#xff1a;import moment from moment; &#xff08;或者var moment require(moment);&#xff09; 使用&#xff1a;(以常用的几个…

HTML JavaScript 命运石之门时间线动态时钟(附代码)

喂&#xff0c;站在那里的人&#xff0c;赐予你labmem 014的称号&#xff01;Steins;Gate! 宇宙虽有其起源&#xff0c;却没有终结——无限。星球虽也有起源&#xff0c;却因其自身之力走向毁灭——有限。拥有睿智之才是最为愚蠢者&#xff0c;历史上不胜枚举...这也可以说是给…

设计 Timeline 时间轴来更精确地控制动画

Firefox 偷偷实现了一个 AnimationTimeline&#xff0c;用来为动画提供时间轴。根据文档&#xff0c;它是一个抽象类&#xff0c;被 DocumentTimeline 继承。 由于是非标准的特性&#xff0c;MDN的文档里面也没有解释的很清楚&#xff0c;只是说它用来让多个动画共享时间轴&am…

html+css实现时间轴

html部分 < div class“datagrid-mac-ower”> < ul class“time-vertical” id“ower-result”> < /ul> < /div> css部分&#xff1a; .datagrid-mac-ower { width: 300px; height: 480px; margin-left: 20px; overflow-y: scroll; } .time-vertical …