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


当前回答

在Linux Mint和Ubuntu中,你可以尝试"nvidia-smi——loop=1"

其他回答

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

例如,如下图:

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

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

我不知道有什么东西可以结合这些信息,但你可以使用nvidia-smi工具来获取原始数据,就像这样(感谢@jmsu关于-l的提示):

$ nvidia-smi -q -g 0 -d UTILIZATION -l

==============NVSMI LOG==============

Timestamp                       : Tue Nov 22 11:50:05 2011

Driver Version                  : 275.19

Attached GPUs                   : 2

GPU 0:1:0
    Utilization
        Gpu                     : 0 %
        Memory                  : 0 %

您可以使用监控程序glances及其GPU监控插件:

开源 安装方法:sudo apt-get install -y python-pip;Sudo PIP安装[gpu] 启动:sudo扫视

它还监视CPU、磁盘IO、磁盘空间、网络和其他一些东西:

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

lsof /dev/nvidia*

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