RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED解決辦法

DaMoWangZQ發表於2020-09-27

配置: 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

相關文章