RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED


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

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

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一米七八_FZH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值