Linux系统下的CUDA多版本共存
实验室的机器原本只有 12.0 版本的 CUDA(最近我才把 11.8 版本的传到 /usr/local 路径下),这给配环境带来了很大不便。之前也碰到过 CUDA 多版本共存的问题,但是很长时间不用会忘记,整体流程还是挺复杂的,因此必须专门写一篇笔记记录一下。
前言——关于 CUDA 版本的小 tips
其实,检测到的 CUDA 版本和用于编译 PyTorch 的 CUDA 版本是可以有一定容错率的,这种版本错配问题一般在安装需要编译的模块时出现。
经不完全实验,例如检测到的是 12.3 版本,而用于编译的是 12.1 版本,其实大概率是不会有问题的。然而,假设检测到的是 12.3 版本,而用于编译的是 11.x 版本,则不保证不会出问题(如 12.4 和 11.8 版本是肯定会报错的)。因此,在配版本的时候尽量避免大版本错配。
安装 CUDA Toolkit
可以事先查询一下驱动和 CUDA 版本之间的适配关系(一般不需要)。可查询 Nvidia 官方文档。
进入 CUDA Toolkit 发布页,查看需要安装的版本。
之后,跟随指引选择操作系统版本,注意使用 runfile(local) 安装。若要更改安装路径,在运行 sh 命令时,在后面添加 –installpath=/path/to/cuda-xx.x 参数即可。
安装过程中,可能会出现以下界面(参考图),选择“Continue”即可。
接下来在安装时,按照如下选项安装(参考图),把驱动取消勾选。
最后,当已经有软链接存在的情况下,还会出现如下提示:
1 | A symlink already exists at /usr/local/cuda. Update to this installation? |
这是更改软链接的提示,一般选择不更改。如果是实验室服务器场景,软链接的更改是风险很大的,因为会影响到所有用户。如果是自己的机器,则无所谓。
软链接修改
如果要修改软链接,则执行以下命令:
1 | # 删除原软链接 |
添加环境变量
本人曾经碰到过修改 .bashrc 造成错误,只能修改 .zshrc 的情况。因此,如果碰到类型场景,两个文件可以都试试。
在配置文件末尾追加如下语句后使用 source 命令生效。
1 | export CUDA_HOME="/path/to/cuda-xx.x" |
关于配置环境变量的一些说明
本人曾经有看到在 CUDA_HOME 变量中添加冒号的写法,这种写法我感觉是有问题的,因为冒号在配置中是“追加”的作用,所以那样就会造成多路径共存的情况,导致指向出现混淆。因此,在配置 CUDA_HOME 时,最好使用双引号的写法,而另外两个环境变量千万不能使用双引号,否则会将原有路径全部覆盖!