在Linux系统上,允许某些工具和软件存在多个不同的版本共存,以便满足不同的开发环境需求。因此,学会如何安装和管理这些工具或者软件的方法有时候也很重要。而在实际开发过程中,CUDA的版本五花八门。为了满足特定的开发环境,通常需要装配不同版本的CUDA。

在已经安装了CUDA 11.1的情况下,由于开发部署需要安装CUDA 10.2,而不想舍弃原有的版本,可以这样做。

下载特定版本

直接通过搜索引擎找到对应版本的下载地址即可,10.2版本的可见此处。需要注意的是最好选择runfile(.sh)文件,个人认为兼容性较高,出错概率可能会比较低。也可以直接通过下面的命令,自动获取CUDA 10.2的下载包

1
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run

安装

进入下载的目录,使用sudo sh命令+该文件目录及其名称,即可运行。需要特别注意的是,当询问CUDA安装的内容时,一定要把Drivers里面的驱动取消选择。程序默认用X勾选的,按下Enter键即可消除。

完成安装之后,程序会返回一个Summary,里面会提示Driver是没有被选择的,只有CUDA的工具箱Toolkit选择了,这个是一定要安装的。

设置软连接方便切换(重点)

CUDA一般的安装目录在/usr/local里面,因此进入该目录后,会发现这个目录里面已经存在两个或以上不同版本的CUDA,判断的方法就是文件夹的名称——一般都会采用cuda+版本号来命名这些文件夹。如果目录里面已经存在cuda文件夹,则说明已经存在一个软链接,链接到特定版本的CUDA了。可以通过stat命令查看这些关系。

1
2
cd /usr/local
stat cuda

如下面这个,cuda已经链接到了版本为11.1的CUDA Toolkit里面了。

1
2
3
4
5
6
7
8
  File: cuda -> /usr/local/cuda-11.1
Size: 20 Blocks: 0 IO Block: 4096 symbolic link
Device: 803h/2051d Inode: 44044446 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-09-19 16:09:18.536761921 +0800
Modify: 2022-09-19 16:08:46.830150833 +0800
Change: 2022-09-19 16:08:46.830150833 +0800
Birth: -

但是想要的是10.2版本的。只要删除原来的软链接,然后再建立一个新的链接,链接到10.2版本即可。可以使用ln命令。

1
2
rm -rf cuda
ln -s /usr/local/cuda-10.2 /usr/local/cuda

检查环境变量

如果第一次安装CUDA,有些教程会直接把含有CUDA版本号的路径作为环境变量的一部分。由于我们建立了软链接,可以直接将相关的环境变量设置成含有软链接cuda的,这样就能减少切换CUDA版本的工作量。

使用vim ~/.bashrc进入环境变量的编辑模式之后,根据实际情况,新增或者设置下面三项。

1
2
3
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

点按:wq保存退出后,记得使用source ~/.bashrc更新环境变量。

总结

纵观这些步骤,最主要的还是设置一个软链接,这个是实现版本自由切换的关键。而后只需在/usr/local里面更新软链接就好。如果已经是多次安装不同版本的CUDA,在环境变量已经设置好了前提下,就不用重复检查CUDA相关的环境变量了。