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


当前回答

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

lsof /dev/nvidia*

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

其他回答

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

从这里下载并安装最新的稳定CUDA驱动程序(4.2)。在linux上,nVidia-smi 295.41给你你想要的。使用nvidia-smi:

[root@localhost release]# nvidia-smi 
Wed Sep 26 23:16:16 2012       
+------------------------------------------------------+                       
| NVIDIA-SMI 3.295.41   Driver Version: 295.41         |                       
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  Tesla C2050               | 0000:05:00.0  On     |         0          0 |
|  30%   62 C  P0    N/A /  N/A |   3%   70MB / 2687MB |   44%     Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.  7336     ./align                                                 61MB  |
+-----------------------------------------------------------------------------+

编辑:在最新的NVIDIA驱动程序中,此支持仅限于特斯拉卡。

在设备监控模式下运行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。

使用参数"——query-compute-apps="

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv

如需进一步帮助,请关注

nvidia-smi --help-query-compute-app

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

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

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