同台设备配置多cuda环境

1. 前言

首先driver版本、cuda版本、cudnn版本在绝大多数情况下(个人pc机上)都是一致的。但很多情况下,我们需要在一台设备上,使用多个版本的cuda, 比方说:

  1. 多人使用的服务器
  2. 需要跑一些其他cuda支持的代码(e.g., 设备安装的cuda为11,需要跑torch1.3代码,但是torch1.3最高只支持到cuda10.1)

上述这种情况下就只能在一个版本的driver上,安装多个版本的cuda和cudnn。但是,这完全是可以做到的.

2. 方法

2.1 安装显卡驱动

在进行接下来的操作之前,请先确保设备上已经安装了正确的显卡驱动,可以使用sudo ubuntu-drivers devices命令查看当前设备的推荐驱动版本:
在这里插入图片描述
一般建议也是安装和上述输出中,recommended所一致的驱动版本, 尽量选择shell运行文件安装,最好不要用sudo ubuntu-drivers autoinstall。(有关于显卡驱动安装的一系列前置操作,详见笔者另一篇博客的第3小节:服务器RTX3090安装显卡驱动,cuda,cudnn,gpu版pytorch记录)

2.2 安装最新版本的cuda和cudnn

要安装多个版本的cuda的话,首先得安装最新版本的cuda.

先使用nvidia-smi查看当前设备的驱动版本:
在这里插入图片描述

然后前去查看驱动和cuda版本之间的对应关系(查看cudnn和cuda,cuda和driver之间的对应关系)
以笔者的470.82版本驱动为例,就应该安装11.4版本的cuda (注意一定一定,要先安装和当前驱动适配的,最新版本的cuda,否则后面安装一些老版本cuda的时候会自动降低驱动版本):
在这里插入图片描述

随后去nvidia官网,找到对应的cuda,如下选择对应的参数,注意一定要选择deb(local)安装方法:
在这里插入图片描述
sudo -s 开启权限,然后copy它的命令运行,并记得把下面命令的最后一行sudo apt-get -y install cuda改为sudo apt install cuda-11-4(改为自己已经安装的最高版本):
在这里插入图片描述

这样安装后,运行:

ls /usr/local

可以看到多了一个cuda-11.4的folder:
在这里插入图片描述
然后去官网下载安装对应版本的cudnn (选择tar包安装,注意不要选择使用deb或者runfile安装,不然之后安装其他版本cudnn的时候,会覆盖掉已经存在的其他cuda的cudnn):
在这里插入图片描述
之后解压并写入lib (把下面的文件名和cuda版本号改为自己的):

tar -xzvf cudnn-x.x-linux-x64-v8.x.x.x.tgz
tar -xzvf cudnn-x.x-linux-aarch64sbsa-v8.x.x.x.tgz
## 当前文件夹下会多出一个cuda/
sudo cp cuda/include/cudnn*.h /usr/local/cuda-M.m/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-M.m/lib64

sudo chmod a+r /usr/local/cuda-M.m/include/cudnn*.h /usr/local/cuda-M.m/lib64/libcudnn*

vim ~/.bashrc,写入下面几行环境变量(依据你自己在当前这一步安装的cuda版本来pad path,e.g., /usr/local/cuda-11/lib64:/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}):

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda-10.1/lib64:/usr/local/cuda-11/lib64:/usr/local/cuda-11.1/lib64:/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"

reboot重启之后,可以nvcc -V检查一下。

2.3 重复上述

之后,就可以安装其他版本(更低版本)的cuda了,比方说我现在安装了cuda11.4,完全可以按照2.2的方法安装cuda11.1,cuda10.1以及对应的cudnn。记得最后都要添加环境变量。

装完所有你需要的cuda之后,reboot一下可以看一下nvidia-smi,确保显卡驱动没有被降低(这也是为什么之前一定要用deb安装cuda的原因),然后可以用下面代码再最终验证一下:

## 改为自己的cuda版本路径
cd /usr/local/cuda-11.4/samples/1_Utilities/deviceQuery 
sudo make 
./deviceQuery
## 改为自己的cuda版本路径
cd /usr/local/cuda-11.1/samples/1_Utilities/deviceQuery 
sudo make 
./deviceQuery

安装了几个cuda,就用几个上述代码(比方说,这里我安装了两个cuda分别为11.1和11.4),最后都能得到这样的输出:

在这里插入图片描述
在这里插入图片描述
就说明这些cuda都全部安装成功,都可以同时使用(因为所谓安装多cuda,其实就是有多个cudatoolkit lib,具体程序用到哪个版本的时候,就会去去环境变量里面找引用)。

3. 参考

本篇博客大多参考如下博文:
Installing Multiple CUDA & cuDNN Versions in Ubuntu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值