GPU的顶级命令使用CUDA

nat*_*rro 96 cuda resource-monitor

我正在尝试监控使用cuda和MPI的进程,有什么方法可以做到这一点,比如命令"top"但是监视GPU呢?

Gui*_*ier 106

要获得有关已用资源的实时洞察,请执行以下操作:

nvidia-smi -l 1

这将循环并每秒调用视图.

如果您不想在控制台历史记录中保留循环调用的痕迹,您还可以执行以下操作:

watch -n0.1 nvidia-smi

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

在此输入图像描述

  • 每0.1秒查询一次卡吗?那会导致卡上的负载吗?另外,使用手表,您每隔0.1秒就开始一个新过程。 (2认同)

Edr*_*ric 80

我不知道任何结合了这些信息的东西,但你可以使用这个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 %
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢`watch -n 0.5 nvidia-smi`,它可以避免让你的终端充满输出 (28认同)
  • 如果我运行它时,GPU使用只是说N/A? (6认同)
  • 我认为如果你添加一个-l,你可以不断更新,有效监控GPU和内存利用率. (4认同)
  • @natorro看起来nVidia放弃了对某些卡的支持.请查看此链接http://forums.nvidia.com/index.php?showtopic=205165 (3认同)

Xue*_*Pan 67

最近,我编写了一个名为nvitopNVIDIA -GPU交互式进程查看器的监控工具。

截图监控

它是用纯Python编写的,并且易于安装。

从 PyPI 安装:

pip3 install --upgrade nvitop
Run Code Online (Sandbox Code Playgroud)

从 GitHub 安装最新版本(推荐):

pip3 install git+https://github.com/XuehaiPan/nvitop.git#egg=nvitop
Run Code Online (Sandbox Code Playgroud)

作为资源监视器运行:

nvitop -m
Run Code Online (Sandbox Code Playgroud)

nvitop将显示 GPU 状态,nvidia-smi但带有额外的精美条形图和历史图表。

对于进程,它将用于psutil收集进程信息并显示USER%CPU%MEMTIMECOMMAND字段,比 更详细nvidia-smi此外,它在监控模式下响应用户输入。您可以中断终止GPU 上的进程。

nvitop带有树视图屏幕和环境屏幕:

树视图

环境


此外,还nvitop可以集成到其他应用程序中。例如,集成到 PyTorch 训练代码中:

nvitop -m
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅https://github.com/XuehaiPan/nvitop 。

:获得GPLv3 许可证Apache-2.0 许可证nvitop双重许可。请随意使用它作为您自己项目的依赖项。有关更多详细信息,请参阅版权声明

  • 注意:使用 `nvitop` 作为依赖项将要求您的项目“也”获得 GPL 许可(如果已发布),即使只是导入该库也是如此。https://opensource.stackexchange.com/questions/6033/can-a-non-gpl-python-program-use-gpl-python-module (2认同)

All*_*leo 54

我发现gpustat非常有用.In可以安装pip install gpustat,并打印进程或用户对使用情况的细分.

在此输入图像描述

  • gpustat 现在有一个 `--watch` 选项:`gpustat -cp --watch` (13认同)
  • `观看-c gpustat -cp --颜色` (6认同)
  • 在您输入“ watch gpustat -cp”后,您可以连续查看统计信息,但颜色消失了。您如何解决?All (3认同)
  • @AbhimanyuAryan 使用 `watch -c`。@Roman Orac,谢谢,当我由于在 python 中导入 _curses 而遇到一些错误时,这也对我在 redhat 8 上有用。 (2认同)
  • `watch -n 0.5 -c gpustat -cp --color` (2认同)

las*_*gar 19

这里下载并安装最新的稳定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  |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

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


Dee*_*pak 16

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

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
Run Code Online (Sandbox Code Playgroud)

如需进一步帮助,请关注

nvidia-smi --help-query-compute-app
Run Code Online (Sandbox Code Playgroud)


gri*_*tis 15

另一种有用的监视方法是使用ps过滤掉消耗GPU的进程.我经常使用这个:

ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*`
Run Code Online (Sandbox Code Playgroud)

这将显示所有nvidia GPU利用流程和一些关于它们的统计数据.lsof ...使用当前用户拥有的nvidia GPU检索所有进程的列表,并ps -p ...显示ps这些进程的结果.ps f显示子/父进程关系/层次结构的良好格式,并-o指定自定义格式.那个类似于刚刚做的ps u但是添加了进程组ID并删除了一些其他字段.

这一点的一个优点nvidia-smi是它将显示进程分支以及使用GPU的主要进程.

但是,一个缺点是它仅限于执行命令的用户拥有的进程.要打开它的任何用户拥有的所有进程,我添加了一个sudolsof.

最后,我将它结合起来watch以获得持续更新.所以,最后看起来像:

watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvidia*`'
Run Code Online (Sandbox Code Playgroud)

其输出如下:

Every 0.1s: ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvi...  Mon Jun  6 14:03:20 2016
USER      PGRP   PID %CPU %MEM  STARTED     TIME COMMAND
grisait+ 27294 50934  0.0  0.1   Jun 02 00:01:40 /opt/google/chrome/chrome --type=gpu-process --channel=50877.0.2015482623
grisait+ 27294 50941  0.0  0.0   Jun 02 00:00:00  \_ /opt/google/chrome/chrome --type=gpu-broker
grisait+ 53596 53596 36.6  1.1 13:47:06 00:05:57 python -u process_examples.py
grisait+ 53596 33428  6.9  0.5 14:02:09 00:00:04  \_ python -u process_examples.py
grisait+ 53596 33773  7.5  0.5 14:02:19 00:00:04  \_ python -u process_examples.py
grisait+ 53596 34174  5.0  0.5 14:02:30 00:00:02  \_ python -u process_examples.py
grisait+ 28205 28205  905  1.5 13:30:39 04:56:09 python -u train.py
grisait+ 28205 28387  5.8  0.4 13:30:49 00:01:53  \_ python -u train.py
grisait+ 28205 28388  5.3  0.4 13:30:49 00:01:45  \_ python -u train.py
grisait+ 28205 28389  4.5  0.4 13:30:49 00:01:29  \_ python -u train.py
grisait+ 28205 28390  4.5  0.4 13:30:49 00:01:28  \_ python -u train.py
grisait+ 28205 28391  4.8  0.4 13:30:49 00:01:34  \_ python -u train.py
Run Code Online (Sandbox Code Playgroud)

  • 您还可以获得占用所有用户GPU的计算程序的PID,而不需要像这样的`sudo`:`nvidia-smi --query-compute-apps = pid --format = csv,noheader` (2认同)
  • @grisaitis小心,我不认为`ps`给出的`pmem`考虑了GPU的总内存而是CPU的总内存,因为`ps`不是“Nvidia GPU”感知 (2认同)

Jay*_*llo 14

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

例如,如下图所示:

在此输入图像描述

您也可以使用watch -n 5 nvidia-smi(-n 5乘5秒间隔).


Fra*_*urt 6

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

  • 开源
  • 安装:sudo apt-get install -y python-pip; sudo pip install glances[gpu]
  • 推出:sudo glances

在此输入图像描述

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

在此输入图像描述


小智 6

在 Linux Mint 和最有可能的 Ubuntu 中,您可以尝试“nvidia-smi --loop=1”


sky*_*uka 5

这可能不优雅,但你可以试试

while true; do sleep 2; nvidia-smi; done
Run Code Online (Sandbox Code Playgroud)

我也尝试过@Edric 的方法,它有效,但我更喜欢nvidia-smi.

  • 或者你可以只做`nvidia-smi -l 2`。或者为了防止重复的控制台输出,`watch -n 2 'nvidia-smi'` (13认同)

Rod*_*igo 5

您可以尝试使用nvtop,它与广泛使用的htop工具相似,但适用于NVIDIA GPU。这是运行中的屏幕截图nvtop

nvtop的屏幕截图

  • 井井有条!多谢!它也可以在最新的 ubuntu (20.04) 中使用,这对我来说是轻而易举的事情,只需执行 ``sudo apt install nvtop`` 即可完成! (2认同)