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


当前回答

在设备监控模式下运行nvidia-smi,例如:

$ nvidia-smi dmon -d 3 -s pcvumt
# gpu   pwr gtemp mtemp  mclk  pclk pviol tviol    sm   mem   enc   dec    fb  bar1 rxpci txpci
# Idx     W     C     C   MHz   MHz     %  bool     %     %     %     %    MB    MB  MB/s  MB/s
    0   273    54     -  9501  2025     0     0   100    11     0     0 18943    75  5906   659
    0   280    54     -  9501  2025     0     0   100    11     0     0 18943    75  7404   650
    0   277    54     -  9501  2025     0     0   100    11     0     0 18943    75  7386   719
    0   279    55     -  9501  2025     0     0    99    11     0     0 18945    75  6592   692
    0   281    55     -  9501  2025     0     0    99    11     0     0 18945    75  7760   641
    0   279    55     -  9501  2025     0     0    99    11     0     0 18945    75  7775   668
    0   279    55     -  9501  2025     0     0   100    11     0     0 18947    75  7589   690
    0   281    55     -  9501  2025     0     0    99    12     0     0 18947    75  7514   657
    0   279    55     -  9501  2025     0     0   100    11     0     0 18947    75  6472   558
    0   280    54     -  9501  2025     0     0   100    11     0     0 18947    75  7066   683

完整的细节在man nvidia-smi。

其他回答

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

例如,如下图:

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

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

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

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

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

要获得使用资源的实时洞察,请执行:

Nvidia-smi -l

这将在每一秒循环并调用视图。

如果你不想在控制台历史记录中保留循环调用的过去痕迹,你也可以这样做:

观看-n0.1 nvidia-smi

其中0.1是时间间隔,单位为秒。

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