我试图监控一个使用CUDA和MPI的进程,有没有办法我可以做到这一点,像命令“顶部”,但也监控GPU ?


当前回答

我在一台windows机器上用下面的代码创建了一个批处理文件来监视每一秒。这对我很管用。

:loop
cls
"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi"
timeout /T 1
goto loop

如果你只想运行一次命令,NVIDIA -smi exe通常位于“C:\Program Files\NVIDIA Corporation”。

其他回答

如果你只是想找到运行在gpu上的进程,你可以简单地使用下面的命令:

lsof /dev/nvidia*

对我来说,nvidia-smi和watch -n 1 nvidia-smi在大多数情况下已经足够了。有时nvidia-smi显示没有进程,但gpu内存用完了,所以我需要使用上面的命令来查找进程。

你可以使用nvidia-smi pmon -i 0来监控GPU 0中的每个进程。 包括计算模式、sm使用情况、内存使用情况、编码器使用情况、解码器使用情况。

只需使用watch nvidia-smi,它将默认以2s间隔输出消息。

例如,如下图:

你也可以使用watch -n 5 nvidia-smi (-n 5 by 5s interval)。

您可以尝试nvtop,它类似于广泛使用的htop工具,但用于NVIDIA gpu。下面是nvtop的截图。

我发现gpustat非常有用。它可以与pip install gpustat一起安装,并按进程或用户打印使用情况。