在很多情況下我們能看到代碼有這樣一行:
1 torch.backends.cudnn.benchmark = true
而且大家都說這樣可以增加程序的運行效果,那到底有沒有這樣的效果,或者什么情況下應該這樣做呢?
解決辦法:
總的來說,大部分情況下,設置這個flag可以讓內置的cuDNN的auto-tunner自動尋找最適合當前配置的高效算法,來達到優化運行效率的問題。
一般來講,應遵循以下准則:
1. 如果網絡輸入的數據維度或類型變化不大,設置torch.backbends.cudnn.benchmark = True 可以增加運行效率。
2. 如果網絡輸入的數據在每次iteration都變化的話,會導致cnDNN每次都尋找一遍最優配置,這樣反而會降低運行效率。
這樣一說,迷惑就解答了。