我們在使用tensorflow
+pycharm
或者PyTorch
寫程序的時候, 有時候會在控制臺終止掉正在運行的程序,但是有時候程序已經(jīng)結(jié)束了笑诅,nvidia-smi
也看到?jīng)]有程序了日月,但是GPU
的內(nèi)存并沒有釋放驮吱,這是怎么回事呢阳距?
使用PyTorch
設置多線程(threads)進行數(shù)據(jù)讀扔庑邸(DataLoader)腐巢,其實是假的多線程品追,他是開了N個子進程(PID都連著)進行模擬多線程工作,所以你的程序跑完或者中途kill掉主進程的話系忙,子進程的GPU顯存并不會被釋放诵盼,需要手動一個一個kill才行,具體方法描述如下:
1.先關閉ssh(或者shell)窗口银还,退出重新登錄
2.查看運行在gpu上的所有程序:
fuser -v /dev/nvidia*
3.kill掉所有(連號的)僵尸進程
具體操作步驟如下:
我們可以用如下命令查看 nvidia-smi
看不到的GPU進程风宁。
nvidia-smi
發(fā)現(xiàn)內(nèi)存泄露問題,即沒有進程時蛹疯,內(nèi)存被占用
fuser -v /dev/nvidia*
發(fā)現(xiàn)僵尸進程(連號的)
查看具體這個進程調(diào)用GPU的情況
pmap -d PID
強行關掉所有當前并未執(zhí)行的僵尸進程
kill -9 PID