RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED解决办法

配置: Python 3.7.6, CUDA 10.0,Pytorch 1.3.1, cudNN 7.6

运行时出现如题错误

解决办法: 在代码前面添加torch.backends.cudnn.enabled = False

作用: 网传是禁用cuDNN作用,官网没有查到相应API

说明: 网上查到的靠谱的解决办法,意思大都是说各个版本匹配的问题,个人觉得有一定道理,可能是这么回事,以上办法,也只是针对个人的环境下,可以解决

ps:
1、什么是CUDA
CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

2、什么是CUDNN
NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。

3、CUDA与CUDNN的关系
CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。

作者:Sunglam
链接:https://www.jianshu.com/p/622f47f94784
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

综上,这个禁用cuDNN到底对速度有什么影响还需要测试

还有一种方法可以试试:

pytorch torch.backends.cudnn设置作用

cuDNN使用非确定性算法,并且可以使用torch.backends.cudnn.enabled = False来进行禁用

如果设置为torch.backends.cudnn.enabled =True,说明设置为使用使用非确定性算法

然后再设置:

torch.backends.cudnn.benchmark = true
那么cuDNN使用的非确定性算法就会自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题

一般来讲,应该遵循以下准则:

如果网络的输入数据维度或类型上变化不大,设置 torch.backends.cudnn.benchmark = true 可以增加运行效率;
如果网络的输入数据在每次 iteration 都变化的话,会导致 cnDNN 每次都会去寻找一遍最优配置,这样反而会降低运行效率。
所以我们经常看见在代码开始出两者同时设置:

torch.backends.cudnn.enabled = True
torch.backends.cudnn.benchmark = True
来源于:https://www.cnblogs.com/wanghui-garcia/p/11514502.html

你可能感兴趣的:(深度学习算法报错汇总,Pytorch)