Anaconda环境PyTorch访问GPU报CUDA驱动初始化失败运行时错误
Anaconda环境PyTorch CUDA初始化失败排查指南
1. 核对驱动与PyTorch的CUDA版本匹配关系
首先明确:
nvidia-smi输出的右上角CUDA版本是当前显卡驱动支持的最高CUDA运行时版本,不是你Anaconda环境内安装的CUDA工具链/PyTorch绑定的CUDA版本。
- 先执行
nvidia-smi,查看输出的CUDA Version数值,确保该数值大于等于你PyTorch绑定的CUDA版本(你当前环境绑定的是11.1.1)。比如如果nvidia-smi显示的最高CUDA版本是10.2,哪怕驱动运行正常,也无法支撑CUDA11.1版本的PyTorch调用。 - 版本对应底线:PyTorch 1.8.1 绑定CUDA11.1.1时,Windows平台最低需要显卡驱动版本 >= 456.38,Linux平台最低需要驱动版本 >=455.23.0。如果驱动版本低于这个阈值,哪怕nvidia-smi能正常出结果,也会触发初始化失败。
2. 排查Anaconda环境的CUDA库路径冲突
系统层面如果之前手动安装过其他版本的CUDA工具链,会导致PyTorch优先加载全局路径下的旧版本CUDA库,和环境内的版本不匹配:
- Windows环境下在激活后的Anaconda终端执行
where cudart64_*.dll,Linux环境下执行ldconfig -p | grep libcudart,确认所有输出的CUDA库路径都属于当前激活的Anaconda环境目录,没有混入系统全局路径的旧版本文件。 - 如果发现存在全局路径的旧库被优先加载,临时把系统环境变量里的全局CUDA相关路径从
Path(Windows)/LD_LIBRARY_PATH(Linux)中移除,重启终端后再测试PyTorch的CUDA调用。
3. 检查PyTorch安装包的CUDA绑定正确性
部分安装源(尤其是国内镜像源)会在未匹配对应CUDA版本时,自动替换成纯CPU版的PyTorch包,哪怕你执行的是CUDA版本对应的安装指令:
- 激活对应Anaconda环境,打开Python交互终端,执行以下代码验证:
import torch print(torch.__version__) print(torch.version.cuda) print(torch.cuda.is_available())
- 如果输出中
torch.version.cuda为None、torch.cuda.is_available()返回False,说明当前安装的是CPU版本PyTorch,需要先卸载现有PyTorch,再按照PyTorch1.8.1对应CUDA11.1的安装指令重新安装。
4. 排查系统层面的调用拦截
- Windows平台如果开启了内核隔离/内存完整性功能,会拦截CUDA驱动的用户态内存访问,哪怕nvidia-smi完全正常,也会触发CUDA初始化失败。需要在Windows安全中心的「设备安全性-内核隔离详情」中临时关闭内存完整性,重启电脑后再测试。
- 多GPU服务器场景下,检查是否被设置了
CUDA_VISIBLE_DEVICES环境变量,将所有可用GPU都屏蔽了。可以临时在终端执行set CUDA_VISIBLE_DEVICES=0(Windows)/export CUDA_VISIBLE_DEVICES=0(Linux)后,再测试PyTorch的CUDA调用。 - 执行
nvidia-smi查看GPU进程列表,确认没有残留的、未正常退出的Python进程独占GPU计算上下文,杀掉残留进程后再重试。
内容的提问来源于stack exchange,提问作者pranrss
相关产品推荐
相关产品推荐

