1 前言

由于项目需要,需要在不同版本CUDA之间切换,所以需要安装多个版本的CUDA.

2 下载需要的CUDA版本

前往 CUDA 的下载官网:https://developer.nvidia.com/cuda-toolkit-archive

选择自己需要的 CUDA 版本,选择对应的系统进行下载,建议选择 .run 形式的安装器。以 root 权限运行 .run 安装器,根据提示进行安装即可。过程中需要注意取消勾选显卡驱动,不要重新安装驱动,因为我们上一步已经安装过了。

3 安装对应的 cuDNN 库

前往 cuDNN 的下载官网:https://developer.nvidia.com/cudnn-archive

注意选择和上一步安装的 CUDA 版本适配的 cuDNN 版本,我们需要分别给每个版本的 CUDA 安装对应版本的 cuDNN 库。建议选择 .tar.xz 形式的压缩包。

下载好后,使用 tar -xvf xxx.tar.xz 解压 cuDNN 库,然后直接执行以下指令进行安装:(注意在正确位置填上对应的版本号,例如 cuda-12.3)

1
2
3
4
5

sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-<版本号>/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-<版本号>/lib64
sudo chmod a+r /usr/local/cuda-<版本号>/include/cudnn*.h /usr/local/cuda-<版本号>/lib64/libcudnn*

4 配置切换脚本

我们的切换方式原理是软链接。每个 CUDA 版本安装后,会在 /usr/local 创建对应版本的文件夹,例如 cuda-12.3,我们可以创建一个软链接 /usr/local/cuda,让软链接指向对应版本的 CUDA,我们通过修改软链接的指向就能修改 CUDA 版本了。

我们通过文本编辑器打开用户文件夹下的 .bashrc,这里用 vim 为例:vim ~/.bashrc

在该文件尾部添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
function switch_cuda {
if [[ $1 =~ ^[0-9]+\.[0-9]+$ ]]; then
sudo rm /usr/local/cuda
sudo ln -s /usr/local/cuda-$1 /usr/local/cuda
nvcc --version
else
echo invalid version
fi
}

注意,如果你的 .bashrc 内已经有类似于前两行的内容,那么需要删除它,替换为我的写法。

添加后保存该文件,然后使用 source .bashrc 刷新该文件。

5 测试多版本切换

上述脚本在 bash 内注册了一个函数叫 switch_cuda,通过调用该函数即可快速切换 CUDA 版本。用法为:switch_cuda xx.x (版本号)

以下是切换的演示,首先将 CUDA 版本切换到了 11.6,然后再切回 12.3:
20250805101414