RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

      • 版本问题
      • 算力不足
      • pip问题
      • 数据位置
      • 其他方案

pytorch训练模型的时候出现的报错信息,尝试了CSDN中的很多办法,在pytorch forums里也试了ptrblck给出的 方案,stack overflow里也有人给出了 回答, 在这里总结一下。

版本问题

检查自己的torch、torchvision、cuda、python版本是否匹配。贴一个链接。

算力不足

环境没有问题,可能是算力不足,用下面的代码

watch -n 1 nvidia-smi

看一下gpu的显存占用率,是不是被占满了。可以减小自己的batch_size的大小试试看能不能跑起来。

pip问题

torch使用的cuda版本与nvidia-smi中的cuda并不一样,这是因为pip wheel和conda二进制文件带有其自己的cuda runtime。如果要从源代码构建自定义cuda扩展或PyTorch,则将使用本地cuda工具包。cuda运行时中使用了pip wheel,这在Turing架构上已被破坏。
贴一个链接,具体的方案和讨论在链接里面看。
下面这个是链接中的解决方案,针对cuda111的。

pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html

数据位置

我们利用model.cuda()让model在gpu上面运行,但是值得注意的是,在model里面新建的变量,必须显式地移动到gpu上才行,最后是靠这个解决的。但是不清楚为什么traceback会报 cuDNN error: CUDNN_STATUS_NOT_INITIALIZED这个错。
另外插句嘴,在查找traceback报错不是真正的错误的时候,发现pytorch1.5.0中意外删除了设备断言语句,这会造成用户可能会遇到诸如非法内存访问等问题,而不是索引错误。这个问题在1.5.1中再次修复。所以,当你在gpu上用pytorch1.5.0遇到内存访问报错的时候,去看看是不是自己的索引出错了。

其他方案

有人说用

sudo rm -rf ~/.nv

清空显存,这个没有尝试,删东西还是要小心一点。

你可能感兴趣的:(pytorch,pytorch,cuda,cudnn)