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