GPU 显存释放

时间:2022-04-21 15:24:00

我们在使用tensorflow 的时候, 有时候会在控制台终止掉正在运行的程序,但是有时候程序已经结束了,nvidia-smi也看到没有程序了,但是GPU的内存并没有释放,那么怎么解决该问题呢?

首先执行下面的命令:

fuser -v /dev/nvidia* #查找占用GPU资源的PID

因为我们只有一块显卡,所以显示如下图所示: 
GPU 显存释放

可以看到我们的nvidia0上还有一个python 2.7的PID

然后我们执行:

kill -9 pid

然后再执行nvidia-smi就可以看到内存已经被释放了

GPU 显存实施查看:

但是有时我们希望不仅知道那一固定时刻的GPU使用情况,我们希望一直掌握其动向,此时我们就希望周期性地输出,比如每 10s 就更新显示。

这时候就需要用到 watch命令,来周期性地执行nvidia-smi命令了。

了解一下watch的功能:

$ whatis watch
watch(1) - execute a program periodically, showing output fullscreen

作用:周期性执行某一命令,并将输出显示。

watch的基本用法是:

$ watch [options] command

最常用的参数是 -n, 后面指定是每多少秒来执行一次命令。

监视显存:我们设置为每 10s 显示一次显存的情况:

$ watch -n 10 nvidia-smi

原文:https://blog.csdn.net/jasonzzj/article/details/52649174

查看是否使用GPU计算:

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

查看日志信息若包含gpu信息,就是使用了gpu。
其他方法:跑计算量大的代码,通过 nvidia-smi 命令查看gpu的内存使用量。