OOM定义—out of memory,内存溢出,一个程序中,已经不需要使用某个对象,但是因为仍然有引用指向它垃圾回收器就无法回收它,当该对象占用的内存无法被回收时,就容易造成内存泄露。多个内存泄漏最终会导致内存溢出,即OOM。
这个报错的原因有很多
1、自身代码有问题,导致GPU内存不够用
这个只能自查
2、有未释放的GPU资源,导致GPU不够用;当然也有可能多人使用GPU,别人使用了。
解决方案就是:
fuser -v /dev/nvidia* #查找占用GPU资源的PID
然后使用kill命令,把偷偷占用的进程杀掉;例如:
kill -9 27600
然后再执行nvidia-smi就可以看到内存已经被释放了
参考:
tensorflow 任意 batch size 不溢出显存( OOM ),使用 darknet 的 sub batch 方法
https://blog.youkuaiyun.com/rensihui/article/details/86215882
https://blog.youkuaiyun.com/qq_32799915/article/details/80355249
https://blog.youkuaiyun.com/nima1994/article/details/79651564
https://blog.youkuaiyun.com/qq_29007291/article/details/81346761
https://blog.youkuaiyun.com/weixin_42007359/article/details/84634600
https://blog.youkuaiyun.com/yewei11/article/details/77993195
https://blog.youkuaiyun.com/LYROOO/article/details/84675137
https://blog.youkuaiyun.com/weixin_33721344/article/details/87219358