释放GPU资源

参考资料

  1. linux GPU查询和空闲时自动抢占脚本
  2. pytorc使用后正确释放GPU内存以及检测GPU使用情况
  3. GPU 命令行释放内存

问题描述

一大早起来,看看实验室的服务器有没有空闲的GPU,仍被占的满满的,太难了。想着自己总不能这样一直盯着吧,能不能写个脚本自动检测空闲GPU并占用呢?于是查到资料1,按照上面的提示,用命令pip install gpustat,安装了gpustat。然后在服务器上执行一下gpustat,发生了一件诡异的事。 第4块GPU的GPU显存占用了10066M,GPU-Util Compute却是0%(原来是0%,释放内存后恢复正常,这里对图片进行了修改)。昨天晚上我有一个在第4块GPU运行的程序异常退出,然后再次运行,发现GPU内存不够,当时以为有人跑了其它程序。现在看看,可能是主程序退出,子线程没有及时释放GPU资源,导致内存泄漏。

解决方法

参照[资料3],先使用命令fuser -v /dev/nvidia*查找占用GPU资源的PID,然后用kill -9 PID杀死程序,再用nvidia-smi发现资源已经成功释放了。