如何解决WSL2中使用Torch时出现的CUDNN_STATUS_NOT_INITIALIZED错误
解决WSL2中PyTorch调用cuDNN出现CUDNN_STATUS_NOT_INITIALIZED错误
环境配置
- 系统:Windows 10 + WSL2 Ubuntu
- GPU:NVIDIA T1200笔记本GPU,Windows端已安装兼容驱动
- WSL安装:通过管理员权限执行
wsl --install、wsl --update完成安装,nvidia-smi可正常显示驱动信息 - CUDA:本地deb源安装Cudatoolkit 12.1,配置环境变量:
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} - CuDNN:版本8.9.1.23
- Python环境:Anaconda3-2020.02-Linux-x86_64,创建conda环境
conda create -n my_env python=3.8 cython,安装Torch==2.0.0+cu117及依赖库
报错信息
运行测试脚本时抛出如下错误:
Traceback (most recent call last): File "test.py", line 169, in <module> tester.infer() File "test.py", line 103, in infer pred = self.model(pts.cuda(), None) File "/home/amadou/anaconda3/envs/cyconvlite/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "/mnt/c/Users/9822223E/Stage3A/WSL_ressources/model_init/models/networks.py", line 47, in forward _, y0 = self.cv_in(x_in, x_in, y_in, 16) File "/home/amadou/anaconda3/envs/cyconvlite/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "/mnt/c/Users/9822223E/Stage3A/WSL_ressources/model_init/models/kernels.py", line 253, in forward y_out = self.conv(y_out.transpose(2,1)).view(batch_size, n_pts_out, self.out_features) File "/home/amadou/anaconda3/envs/cyconvlite/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "/home/amadou/anaconda3/envs/cyconvlite/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 313, in forward return self._conv_forward(input, self.weight, self.bias) File "/home/amadou/anaconda3/envs/cyconvlite/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 309, in _conv_forward return F.conv1d(input, weight, bias, self.stride, RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
已尝试重装WSL、CuDNN及重建conda环境,问题仍未解决。
解决方案
版本兼容性检查
Torch==2.0.0+cu117是基于CUDA 11.7编译的,但系统中安装的是CUDA 12.1,版本不匹配会直接导致cuDNN初始化失败。可选择两种修复方式:- 卸载当前CUDA 12.1,安装CUDA 11.7版本;
- 更换为适配CUDA 12.1的PyTorch版本(如Torch==2.0.0+cu118或更高版本,需确认与Python3.8兼容)。
验证CuDNN与CUDA版本匹配
CuDNN 8.9.1.23适配CUDA 12.0/12.1,但如果搭配CUDA 11.7,需要更换为对应版本的CuDNN(如CuDNN 8.5.x系列),确保二者版本严格对应。确认环境变量生效
将CUDA环境变量配置写入~/.bashrc或conda环境的activate.d脚本中,确保每次激活环境时自动加载。执行echo $PATH和echo $LD_LIBRARY_PATH确认CUDA路径排在最前端,避免系统其他CUDA版本干扰。基础CUDA/cuDNN可用性测试
在conda环境中运行以下代码,验证基础功能是否正常:import torch print(torch.cuda.is_available()) print(torch.backends.cudnn.version()) print(torch.cuda.device_count()) # 测试简单卷积 x = torch.randn(1, 3, 32).cuda() conv = torch.nn.Conv1d(3, 16, 3).cuda() y = conv(x) print(y.shape)如果此步骤报错,说明基础环境存在问题,需优先排查解决。
检查WSL2版本与驱动兼容性
确保Windows端NVIDIA驱动为适配WSL2的最新版本,同时WSL2内核版本不低于5.10。执行wsl --status查看内核版本,若版本过低则执行wsl --update升级。
内容的提问来源于stack exchange,提问作者Amadou
相关产品推荐
相关产品推荐

