1. 程式人生 > >pytorch high memory usage but low volatile gpu-util

pytorch high memory usage but low volatile gpu-util

問題:pytorch程式GPU的使用率很低。 

如圖,我使用5、6號顯示卡執行pytorch的程式,GPU使用率很低;而其他顯示卡跑的tensorflow網路,GPU使用率都正常。

一般情況下,深度學習遇到這種問題,上來都會認為是dataloader讀資料的效率問題:由於讀取資料耗時教久,往往程式不能執行GPU上深度網路的計算程式碼。

探索:

使用7號顯示卡debug該pytorch程式,輸出每次迭代讀取資料與網路計算消耗的時間。結果顯示

1.讀取資料的時間比網路計算少兩個數量級

2.期間7號顯示卡顯示卡使用率也很正常

3.期間5,6號顯示卡的使用率也回升了

關閉7號顯示卡上的程式後,發現

1. 5,6號顯示卡的使用率隨即下降

2. 7號顯示卡偶爾有3%的volatile gpu-util

我感覺應該是有程式在使用7號顯示卡,同時也會導致5、6號顯示卡使用率下降。

解決方案:

這個nvidia forum中提到,應該是GPU預設打開了ECC(error correcting code, 錯誤檢查和糾正),會佔用視訊記憶體和降低顯示卡效能,開啟Persistence Mode Enabled(用root執行nvidia-smi -pm 1)後5、6號顯示卡的顯示卡使用率恢復正常水平,問題解決。

疑問:

1.為什麼tensorflow的程式不會被ECC影響?

2.為什麼在7號顯示卡上執行pytorch程式後,其他顯示卡的使用率都會恢復正常?

後面有空的話可以查下這兩個問題。