快速切换 CUDA 版本-Windows 系统
今天创建了一个新的CUDA版本11.3,原来是11.8,关于两个版本如何切换做一些记录。总结来看主要就两步:1.将系统变量PATH中现在所需版本的CUDA路径上移到另一个版本前面从而优先使用该版本;2.系统变量CUDA_PATH设置为对应版本的路径(可选但推荐)。配置过程参考的GPU版本pytorch的安装
以下是针对 Windows 系统 切换 CUDA 版本到 11.3 的详细步骤:
1. 调整环境变量优先级
CUDA 版本的选择由环境变量 PATH
中路径的 顺序 决定。系统会优先使用 PATH
列表中 靠前路径 下的 CUDA 工具包。按以下步骤操作:
步骤 1:打开环境变量设置界面
- 按下
Win + S
,搜索 “编辑系统环境变量”,点击进入。 - 在 “系统属性” 窗口中,点击 “环境变量” 按钮。
步骤 2:修改 PATH
变量
-
在 “系统变量” 列表中找到
Path
,双击编辑。
-
确保以下两个 CUDA 11.3 的路径 位于 CUDA 11.8 的路径之前:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\libnvvp
- 使用 “上移” 按钮将 CUDA 11.3 的路径移到 CUDA 11.8 的路径上方。
- 最终顺序示例: 我的CUDA安装路径进行了修改所以是下图所示。
-
点击 确定 保存所有窗口。
2. 验证 CUDA 版本切换
方法 1:通过命令行检查
- 注意打开新的 命令提示符(重要:旧的终端不会继承新环境变量)。
- 执行以下命令验证 CUDA 版本:
nvcc --version
- 如果输出显示
release 11.3
,表示已切换成功。 - 如果仍显示 11.8,回到步骤 1 检查
PATH
顺序。
- 如果输出显示
方法 2:通过 where
命令检查优先级
where nvcc
- 输出应首先显示 CUDA 11.3 的
nvcc.exe
路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin\nvcc.exe
3. 处理 CUDA_PATH
变量(可选但推荐)
某些程序(如 Visual Studio)会依赖 CUDA_PATH
环境变量。为确保一致性,在使用对应版本的CUDA时,需要改为对应版本的路径:
- 在 环境变量 界面中,检查是否存在
CUDA_PATH
:- 如果存在且指向 CUDA 11.8(如
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
),将其值改为 CUDA 11.3 的路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
- 如果不存在,可手动新建
CUDA_PATH
变量并指向 CUDA 11.3。
- 如果存在且指向 CUDA 11.8(如
4. 临时切换 CUDA 版本(无需修改系统变量)
如果仅需在 当前终端会话 中使用 CUDA 11.3,可直接在命令行临时设置路径优先级:
# 临时将 CUDA 11.3 的路径添加到最前面
set PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\libnvvp;%PATH%
- 此方式退出终端后失效,适合快速测试。
5. 深度学习框架适配
切换 CUDA 版本后,需确保深度学习框架(如 PyTorch/TensorFlow)链接到正确的 CUDA 11.3 库:
- PyTorch:
安装与 CUDA 11.3 兼容的版本(如torch==1.12.1+cu113
):pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
- TensorFlow:
安装tensorflow-gpu==2.6.0
(对应 CUDA 11.3):pip install tensorflow-gpu==2.6.0
6. 常见问题解决
问题 1:切换后 nvidia-smi
显示的 CUDA 版本仍是 11.8
- 原因:
nvidia-smi
显示的是驱动支持的 最高 CUDA 版本,与当前使用的 CUDA 工具包版本无关。 - 解决方案:忽略此信息,以
nvcc --version
为准。
问题 2:程序仍调用 CUDA 11.8 的库
- 检查点:
- 确保
PATH
中 CUDA 11.3 路径在 11.8 之前。 - 重启所有依赖 CUDA 的程序(如 IDE、Jupyter Notebook)。
- 清理程序缓存(如 PyTorch 的
__pycache__
)。
- 确保
总结
通过调整 PATH
顺序和 CUDA_PATH
,你可以无缝切换 CUDA 11.3 和 11.8。记得验证关键命令的输出,并确保深度学习框架与 CUDA 版本匹配。