一个全面的指南:在一台机器上管理多个CUDA版本
多版本CUDA管理全面指南:一台机器上的完美解决方案
如何在开发环境中处理不同的CUDA版本
在我之前的AI咨询师角色中,我被指派使用虚拟环境作为管理和隔离Python环境的工具。鉴于该项目依赖GPU加速,我遇到了安装的CUDA版本与项目所需版本不同的情况。为了解决这个问题,我不得不安装所需的CUDA版本,并配置我的环境以在不影响系统CUDA设置的情况下使用它。据我所知,很少有全面、端到端的教程涉及到这个特定需求。因此,本教程对于那些希望了解如何安全管理多个CUDA Toolkit版本的人来说是一个宝贵的资源。
目录:
· 1. 引言
· 2. 可得的CUDA版本
· 3. 下载和提取二进制文件
· 4. 安装CUDA Toolkit
· 5. 项目配置
· 6. 结论
1. 引言
在系统上安装多个CUDA Toolkit版本可能会导致一些效果和后果,其中一些可能会影响到您的系统:
- 可能会导致系统
PATH和环境变量的冲突。如果管理不当,这些冲突可能会影响默认使用的CUDA版本。 - 可能需要特定的GPU驱动程序版本以获得最佳性能和兼容性。安装新版本可能需要更新GPU驱动程序。
- 某些库和软件可能依赖于特定的CUDA版本。安装新版本可能会破坏与这些依赖关系的兼容性。
- 依赖于CUDA的应用程序可能需要进行调整以适应新版本。不兼容性可能导致错误或意外行为。
- 错误管理多个CUDA版本可能导致系统不稳定或GPU加速应用程序中的错误。
因此,为了安全地管理项目所需的多个CUDA Toolkit版本,请按照以下步骤进行操作:
- 检查系统当前的CUDA版本。
- 下载并提取所需版本的二进制文件。
- 执行安装程序,仅安装Toolkit。
在本教程中,我将提供一个详细的,一步一步的示例,以说明如何完成上述操作。此外,在成功安装二进制文件后,我将指导您设置虚拟环境。
2. 可得的CUDA版本
我们通过运行命令nvidia-smi来查看系统当前使用的CUDA版本:

如您所见,CUDA版本为12.1。
现在让我们显示我机器上可用的CUDA:
$ ls /usr/local/ | grep cudacudacuda-11.7cuda-12cuda-12.1
我机器上有三个不同的版本。
3. 下载和提取二进制文件
假设我将要使用CUDA Toolkit版本11.8来开展工作。为了获得该版本,我们首先访问NVIDIA CUDA Toolkit存档网站:此处。我们找到我们项目所需的CUDA Toolkit的具体版本。请确保选择与我们的操作系统兼容的版本。在我选择的目标平台中,我选择了:

选择与您的操作系统相对应的CUDA Toolkit的“runfile (local)”版本。这个特定文件通常带有.run扩展名。当选择runfile(local)时,网站会提供安装说明。在我的情况下,提供的说明如下:
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.runsudo sh cuda_11.8.0_520.61.05_linux.run
然而,重要的是要记住我们的目标不是安装此版本,因为已经存在更新的版本。因此,我们只需要遵循第一条指令来下载文件:
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
可以通过将在此链接发布的MD5校验和与下载的文件的校验和进行比较来验证下载。
“本地安装程序是自包含的。它是一个大文件,只需要从互联网下载一次,并且可以在多个系统上安装。本地安装程序是低带宽互联网连接或由于防火墙限制而无法使用网络安装程序时推荐的安装程序类型。” [1]
在这个阶段,打开终端,转到您传输CUDA运行文件的目录,并使CUDA运行文件可执行:
chmod +x cuda_11.8.0_520.61.05_linux.run
4. 安装CUDA工具包
现在,我们使用--silent和--toolkit标志来运行CUDA运行文件,执行CUDA Toolkit的静默安装:
sudo ./cuda_11.8.0_520.61.05_linux.run --silent --toolkit
其中:
--silent:执行无需进一步用户输入和最小命令行输出的安装。--toolkit:仅安装CUDA Toolkit并保留当前驱动程序。
如果要求您接受协议,请接受以继续安装。
在这个结束时,CUDA工具包二进制文件已被提取。我们可以通过再次运行以下命令来确认:
$ ls /usr/local/ | grep cudacudacuda-11.7cuda-11.8cuda-12cuda-12.1
如您所见,cuda-11.8现在可在我的机器上使用,而系统当前版本保持不变(您可以通过运行nvidia-smi进行确认)。
这些步骤允许您安装CUDA版本二进制文件。在下一节中,我将向您展示如何设置您的项目以使用所需的CUDA版本。
5. 项目设置
在处理多个项目时,建议使用虚拟环境。我们首先创建一个虚拟环境。在我的情况下,需要使用python3.8。创建虚拟环境可以使用以下命令。我在venv中创建了一个名为my_venv的环境,这是我放置虚拟环境的文件夹:
python3.8 -m venv venv/my_envsource venv/my_env/bin/activate
让我们看看当前正在使用的CUDA版本:
$ nvcc --versionnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2021 NVIDIA CorporationBuilt on Thu_Nov_18_09:45:30_PST_2021Cuda编译工具,版本11.5,V11.5.119构建cuda_11.5.r11.5/compiler.30672275_0
如您所见,创建的环境未使用所需的CUDA版本,因此我们需要通过更新activate文件并添加以下行来手动设置:
export PATH=/usr/local/cuda-11.8/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
您可以使用您喜欢的编辑器更新activate文件,或者您可以简单地运行以下命令将文本追加到文件的末尾::
echo "export PATH=/usr/local/cuda-11.8/bin:$PATH" >> venv/my_env/bin/activateecho "LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH" >> venv/my_env/bin/activate
最后,我们需要重新激活环境并再次运行nvcc命令:
$ source venv/nerfstudio/bin/activate$ nvcc --versionnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2022 NVIDIA CorporationBuilt on Wed_Sep_21_10:33:58_PDT_2022Cuda compilation tools, release 11.8, V11.8.89Build cuda_11.8.r11.8/compiler.31833905_0
就这样!现在项目已配置为运行所需的CUDA版本,并且没有冲突!
6. 结论
通过按照本教程中的步骤进行操作,您可以成功在系统上维护多个版本的CUDA,而不会遇到安装之间的冲突。这种灵活性使得每个项目可以利用其需要的确切CUDA版本,通过配置适合您特定需求的环境变量来实现。
感谢您的阅读。希望您喜欢这篇教程。如果您喜欢我的教程,请通过关注和订阅来支持我。这样,您将收到有关我的新文章的通知。如果您有任何问题或建议,请随时在下方留言。
参考资料
图片来源
本文中未在标题中提及的所有图片和图表均由作者提供。





