某个 PyTorch 写的程序如果强行退出,会导致 GPU Memory 不释放。下面我们来解决这个问题。
首先,使用 fuser -v /dev/nvidia*
查看是哪些进程跑在了 GPU 上。
我们可能会得到这样的东西:
USER PID ACCESS COMMAND
/dev/nvidia0: haoyu 13100 F.... python3
haoyu 13149 F.... python3
haoyu 13150 F.... python3
haoyu 13151 F.... python3
/dev/nvidia1: haoyu 13100 F...m python3
haoyu 13149 F...m python3
haoyu 13150 F...m python3
haoyu 13151 F...m python3
/dev/nvidiactl: haoyu 13100 F...m python3
haoyu 13149 F...m python3
haoyu 13150 F...m python3
haoyu 13151 F...m python3
/dev/nvidia-uvm: haoyu 13100 F.... python3
haoyu 13149 F.... python3
haoyu 13150 F.... python3
haoyu 13151 F.... python3
好多……
然后,使用 xargs kill -9 进程 PID
将它们一个一个结束掉。这样世界就清静了。
但是一个一个结束也是好烦人的…… 所以,继续脚本代劳:
fuser -v /dev/nvidia* | grep -o -E '[0-9]+' | xargs kill -9
一个命令运行下去,世界瞬间清静。
或者再懒一步,设置个alias:
alias freegpu="fuser -v /dev/nvidia* | grep -o -E '[0-9]+' | xargs kill -9"
将上面一行代码加入到.zshrc
中,重新打开zsh即可。
发表回复