释放僵死程序占用的 GPU Memory


发布于

|

分类

某个 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即可。

参考资料


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注