更换GPU后PyTorch代码抛出CUDA RuntimeError,如何解决?
解决RTX A6000下PyTorch报CUBLAS_STATUS_INVALID_VALUE错误的方案
1. 排查CUDA版本与显卡驱动兼容性
RTX A6000属于Ada Lovelace架构,对CUDA版本有最低要求:
- 执行
nvcc --version查看当前CUDA版本,需确保版本≥11.7(Ada架构官方最低适配版本) - 若CUDA版本符合,检查显卡驱动版本是否匹配(例如CUDA 11.7对应驱动≥515.43.04);若CUDA版本过低,直接升级到适配Ada架构的CUDA版本,同步更新驱动
2. 验证PyTorch与CUDA版本匹配
运行以下代码确认PyTorch的CUDA适配情况:
import torch print(torch.version.cuda) # 编译时依赖的CUDA版本 print(torch.cuda.is_available()) # 系统是否能正常调用CUDA print(torch.cuda.device_count()) # 检测到的GPU数量
若编译版本与系统CUDA版本不匹配,卸载现有PyTorch,重新安装对应CUDA版本的PyTorch包(例如适配CUDA 12.1的安装命令:pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121)
3. 检查GPU状态与系统环境
- 执行
nvidia-smi确认GPU是否被正确识别,显存是否正常,无异常占用进程 - 关闭所有占用GPU的其他任务(如其他训练脚本、GPU监控工具),重启系统后再运行测试代码
- 确认系统未启用GPU虚拟化或其他干扰CUDA运行的设置
4. 测试底层CUDA运算功能
运行以下极简代码验证CUDA基础运算是否正常:
import torch a = torch.randn(3,3).cuda() b = torch.randn(3,3).cuda() print(a @ b) # 对应报错中的cublasSgemm矩阵乘法操作
若这段代码仍报错,说明是底层CUDA环境问题,重点排查驱动安装完整性、CUDA组件是否缺失;若正常,再排查是否存在旧模型参数残留、环境变量冲突等问题
5. 检查环境变量与安装完整性
- 确认
CUDA_HOME环境变量指向正确的CUDA安装路径 - 重新安装CUDA时选择完整安装选项,确保包含CUBLAS等核心组件
- 删除
~/.cache/torch目录下的缓存文件,清理PyTorch残留缓存后重新运行代码
内容的提问来源于stack exchange,提问作者한일석
相关产品推荐
相关产品推荐

