在学习和调试Moco代码时运行到模型的正向传播时(很多博客都写的是在loss.backward()这一步报错,可能是显存不足、类别数设置有误等其他原因)报错:
cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
查阅了很多资料可能原因如下,供大家自查。我最终是通过第2.2步解决的该问题
1. 首先检查GPU是否available
import torch
print(torch.cuda.is_available())
如果显示Ture,说明GPU没有问题
2. 检查CUDA和cuDNN版本的兼容性,可能是Pytorch需要安装的四个包,版本没有对应,导致CUDA没法用
2.1 首先查询自己电脑CUDA的版本,在windows电脑上有两种方法:
- 在命令行输入
nvcc --version
但是我在cmd中输入该指令显示 'nvcc' 不是内部或外部命令,也不是可运行的程序,应该是cuda安装路径没有添加到环境变量中的PATH的原因,但是我没有去解决这个问题而是使用的第二个方法查询的CUDA版本
-
在cmd命令行窗口输入
nvidia-smi
在右上角就可以看到CUDA的版本
2.2 进入Pytorch官网重新安装对应版本的torch相关的四个库Previous PyTorch Versions | PyTorch
比如我的版本是12.2,就直接在pycharm的命令行窗口运行下面的指令