我們正在使用tensorflow或pytorch寫程式的時候,有時會在控制台將程式殺死,但是有時候程式已經結束了,用nvidia-smi也看到程式已經停止,但是gpu還佔著記憶體沒有釋放。
這是因為,在使用pytorch設定多執行緒(threads)進行資料讀取(data_loader)時,其實是假的多執行緒,而是開了n個子進行進行模擬多執行緒工作,所以在程式跑完或者中途kill掉主程序的話,子程序的gpu視訊記憶體並不會被釋放掉,需要手動乙個乙個kill掉
具體方法描述如下:
1、先關閉掉ssh(或shell)窗後,退出重新鄧麗
2 檢視執行在gpu上的所有程式:
fuser -v /dev/nvidia*
3 kill掉所有的殭屍程序(殭屍程序是連號的)
執行fuser -v /dev/nvidia* 可以發現殭屍程序,檢視具體這個程序呼叫gpu的情況使用 pmap -d pid
強行關掉所有當前並未執行的殭屍程序
kill -9 pid
參考
自己只是想要記錄一下出現過的錯誤,後面方便找
記錄 檢視釋放指定GPU的視訊記憶體占用
方法一 nvidia smi方法二 gpustat 安裝 gpustat pip install gpustat使用 方法三 定位占用的程序pid fuser v dev nvidia 會顯示gpu和對應的程序占用列表。dev nvidia2代表第三塊gpu 殺掉無用程序 kill 9 window...
GPU顯示卡,視訊記憶體位寬
視訊記憶體位寬是顯存在乙個時鐘週期內所能傳送資料的位數,位數越大則瞬間所能傳輸的資料量越大,這是視訊記憶體的重要引數之一。1簡介視訊記憶體位寬是顯存在乙個時鐘週期內所能傳送資料的位數,位數越大則瞬間所能傳輸的資料量越大,這是視訊記憶體的重要引數之一。視訊記憶體頻寬 視訊記憶體頻率x視訊記憶體位寬 8...
顯示卡和GPU 視訊記憶體的理解
顯示卡 gpu決定一切,打個比方,你去奇瑞買qq花3w它也是4個輪,卡宴160w也是4個輪,這裡車輪也就相當於視訊記憶體,大家視訊記憶體一樣,奇瑞什麼發動機卡宴什麼發動機?奇瑞絕對跑不到200邁,也就是說gpu的好壞直接決定了你的顯示卡跑多少分。另外視訊記憶體還有位寬問題,就好比卡宴是四驅qq是兩驅...