释放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
发现资源已经成功释放了。