conda环境装cudatoolkit/cudnn后PyTorch仍用CPU问题咨询
CUDA与PyTorch环境配置问题
环境信息
Conda环境中已安装的CUDA相关包:
(my_project_env) C:\Users...\pythonProject3\>conda list cudatoolkit # packages in environment at C:\ProgramData\anaconda3\envs\my_project_env: # # Name Version Build Channel cudatoolkit 11.8.0 hd77b12b_0
(my_project_env) C:\Users...\pythonProject3\>conda list cudnn # packages in environment at C:\ProgramData\anaconda3\envs\my_project_env: # # Name Version Build Channel cudnn 8.9.2.26 cuda11_0
程序运行输出:
(my_project_env) C:\Users\Oliver\PycharmProjects\pythonProject3\>python asfdsfg.py Using device: cpu
测试代码(asfdsfg.py):
import torch import torch.nn as nn device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print("Using device:", device) print(torch.cuda.get_arch_list())
系统级CUDA信息:
本地安装的CUDA Toolkit版本为12.2,路径为:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2
问题分析与解决
1. PyTorch未识别CUDA的核心原因
PyTorch的CUDA支持不依赖系统级的CUDA Toolkit(12.2),而是需要与自身编译版本匹配的cudatoolkit。你当前的问题大概率是PyTorch版本不对:要么装的是纯CPU版,要么是基于其他CUDA版本编译的,和conda环境里的11.8不兼容。
2. 排查与修复步骤
- 先验证PyTorch绑定的CUDA版本:
在conda环境中执行命令:
如果输出为python -c "import torch; print(torch.version.cuda)"None或不是11.8,说明PyTorch是CPU版,需要重装对应CUDA版本的PyTorch。 - 重装适配CUDA 11.8的PyTorch:
这个命令会自动安装与cudatoolkit 11.8匹配的PyTorch版本,无需手动调整其他依赖。conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
3. 让conda环境识别本地新版cudnn的方法
Conda环境默认优先使用自身安装的cudnn,要切换到本地的12.2版本cudnn,需按以下步骤操作:
- 先卸载conda环境中的cudnn:
conda remove cudnn - 将本地cudnn的库路径添加到系统环境变量
PATH中(Windows系统):
路径示例:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\lib\x64,确保该路径在conda环境的库路径之前。 - 重装适配CUDA 12.x的PyTorch:
本地12.2的cudnn需要PyTorch支持CUDA 12.x,目前稳定版PyTorch支持到12.1(可兼容12.2),执行命令:conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
4. 额外注意事项
- 系统级CUDA Toolkit主要用于编译自定义CUDA程序,PyTorch运行时使用的是conda环境内的cudatoolkit(或PyTorch自带的CUDA库),两者版本无需一致。
- 检查显卡驱动版本:CUDA 11.8要求驱动版本≥450.80.02,CUDA 12.2要求≥525.60.13,驱动版本不足也会导致
torch.cuda.is_available()返回False。
内容的提问来源于stack exchange,提问作者Oliver Bai
相关产品推荐
相关产品推荐

