加载报错CUDNN_STATUS_NOT_INITIALIZED

1、首先,在命令行使用一行 Python 代码快速验证 PyTorch 是否能加载及 CUDA 是否可用:
python -c "import torch; print(f'Torch: {torch.__version__}, CUDA: {torch.version.cuda}, IsAvailable: {torch.cuda.is_available()}')"
如果这一步报错或显示 False,说明环境基础安装有问题。如果显示 True 但运行具体模型时报错,请继续往下看。
2、查看代码执行的时候,加载的是哪个文件

点击查看代码
python -c "import torch, ctypes, os, torch.backends.cudnn as c; \
           print('cuDNN ver:', c.version()); \
           h = ctypes.CDLL('libcudnn.so.9'); \
           print('real path:', h._name, '->', os.path.realpath(h._name))"
这是我的输出:
点击查看代码
pm$ python -c "import torch, ctypes, os, torch.backends.cudnn as c; \
           print('cuDNN ver:', c.version()); \
           h = ctypes.CDLL('libcudnn.so.9'); \
           print('real path:', h._name, '->', os.path.realpath(h._name))"
cuDNN ver: 91200
real path: libcudnn.so.9 -> /mnt/data1/code/litter/test_voxcpm/libcudnn.so.9
(/mnt/data1/code/litter/test_voxcpm/venv) user@user-MZ72-HB2-00:/mnt/data1/code/litter/test_voxcpm$ ldd $(python -c "import torch; print(torch._C.__file__)") | grep libcudnn
	libcudnn.so.9 => /mnt/data1/code/litter/test_voxcpm/venv/lib/python3.10/site-packages/torch/lib/../../nvidia/cudnn/lib/libcudnn.so.9 (0x000074dc21000000)
PyTorch 根本没去系统目录找 cuDNN,而是直接捆绑了自带的一份 9.1.2.0(nvidia-cudnn-cu12 wheel 里带的),放在 .../site-packages/nvidia/cudnn/lib/libcudnn.so.9 -> libcudnn.so.9.1.2
看到的 CUDNN_STATUS_NOT_INITIALIZED 并不是“没初始化”,而是PyTorch 加载到的 cuDNN 主版本(9.1.2)与框架期望/系统头文件(9.5.0)不一致,导致 ABI 不匹配,cuDNN 内部自检直接返回了 CUDNN_STATUS_NOT_INITIALIZED。
根因
PyTorch 2.5.1+cu121 官方轮自带 nvidia-cudnn-cu12==9.1.2.0,而系统里只有头文件升级到 9.5.0;动态库搜索时 wheel 内部的 9.1.2 优先级最高,于是出现“头文件 9.5 + 运行时 9.1”的混用局面。
3、解决:把运行时也统一到 9.5 即可:
`pip install --upgrade nvidia-cudnn-cu12==9.5.0.50`

posted on 2025-12-10 14:25  妙笔千山  阅读(0)  评论(0)    收藏  举报