GPU 使用监控 (CUDA)

pbm*_*pbm 328 monitoring gpu

我在我的电脑上安装了 CUDA 工具包,并在 GPU 上启动了 BOINC 项目。在 BOINC 中,我可以看到它在 GPU 上运行,但是有没有一种工具可以向我显示有关在 GPU 上运行的内容的更多详细信息 - GPU 使用情况和内存使用情况?

pbm*_*pbm 380

对于 Nvidia GPU,有一个工具nvidia-smi可以显示 GPU 的内存使用情况、GPU 利用率和温度。还有一个计算进程列表和更多选项,但不完全支持我的图形卡 (GeForce 9600 GT)。

Sun May 13 20:02:49 2012       
+------------------------------------------------------+                       
| NVIDIA-SMI 3.295.40   Driver Version: 295.40         |                       
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  GeForce 9600 GT           | 0000:01:00.0  N/A    |       N/A        N/A |
|   0%   51 C  N/A   N/A /  N/A |  90%  459MB /  511MB |  N/A      Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.           Not Supported                                                 |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

  • `watch -n 0.5 nvidia-smi`,将保持输出更新而不用输出填充终端。 (206认同)
  • @Bar 好提示。`watch -d -n 0.5 nvidia-smi` 会更好。 (70认同)
  • @donlucacorleone `man watch` 告诉我们 `-d` 标志会突出显示输出之间的差异,因此它可以帮助突出显示哪些指标随时间发生变化。 (21认同)
  • @zeekvfu 我认为最好解释一下 `-d` 标志的作用 (10认同)

qed*_*qed 115

对于 linux,usenvidia-smi -l 1将不断为您提供 gpu 使用信息,刷新间隔为 1 秒。

  • 我更喜欢使用 `watch -n 1 nvidia-smi` 来获得持续更新而不用输出填充终端 (115认同)
  • 以这样的速度开始一个新的过程会如此有害吗? (4认同)
  • 使用手表意味着您每秒开始一个新的进程来轮询卡片。最好执行 -l,而不是每秒执行一次,我建议每分钟或每 5 分钟执行一次。 (2认同)

Jon*_*hoi 108

最近我编写了一个简单的命令行实用程序,称为gpustat(它是 的包装器nvidia-smi):请查看https://github.com/wookayin/gpustat


jip*_*pie 67

对于英特尔 GPU,存在intel-gpu-tools来自http://intellinuxgraphics.org/ 的项目,它带来了命令intel_gpu_top(除其他外)。它类似于tophtop,但专门用于 Intel GPU。

   render busy:  18%: ????                                   render space: 39/131072
bitstream busy:   0%:                                     bitstream space: 0/131072
  blitter busy:  28%: ??????                                blitter space: 28/131072

          task  percent busy
           GAM:  33%: ???????                 vert fetch: 0 (0/sec)
          GAFS:   3%: ?                       prim fetch: 0 (0/sec)
            VS:   0%:                      VS invocations: 559188 (150/sec)
            SF:   0%:                      GS invocations: 0 (0/sec)
            VF:   0%:                           GS prims: 0 (0/sec)
            DS:   0%:                      CL invocations: 186396 (50/sec)
            CL:   0%:                           CL prims: 186396 (50/sec)
           SOL:   0%:                      PS invocations: 8191776208 (38576436/sec)
            GS:   0%:                      PS depth pass: 8158502721 (38487525/sec)
            HS:   0%:                      
            TE:   0%:                      
          GAFM:   0%:                      
           SVG:   0%:                      
Run Code Online (Sandbox Code Playgroud)


小智 41

nvidia-smi在某些 linux 机器上不起作用(对于许多属性返回 N/A)。你可以nvidia-settings改用(这也是 mat kelcey 在他的 python 脚本中使用的)。

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory
Run Code Online (Sandbox Code Playgroud)

您还可以使用:

watch -n0.1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"
Run Code Online (Sandbox Code Playgroud)

用于持续监测。

  • 您可以执行 `nvidia-settings -q all` 来查看您可以监控的其他参数。我正在监控 `GPUCurrentProcessorClockFreqs` 和 `GPUCurrentClockFreqs`。 (5认同)
  • 很高兴这不是评论。当我遇到这个问题时,这正是我正在寻找的。 (4认同)

小智 25

对于 Linux,我使用我自己编写的类似 HTOP 的工具。它监控并概述 GPU 温度以及核心/VRAM/PCI-E 和内存总线使用情况。不过,它不会监控 GPU 上运行的内容。

监控器

在此处输入图片说明

  • `nvidia-settings` 需要一个正在运行的 X11,但情况并非总是如此。 (3认同)

小智 21

我有一个 GeForce 1060 GTX 视频卡,我发现以下命令提供了有关卡利用率、温度、风扇速度和功耗的信息:

$ nvidia-smi --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式查看所有查询选项的列表:

$ nvidia-smi --help-query-gpu
Run Code Online (Sandbox Code Playgroud)

  • 添加`memory.used`或(`memory.free`)也是值得的。 (4认同)

Kev*_*vin 17

为完整起见,AMD 有两个选项:

  1. fglrx(闭源驱动程序)。

    $ aticonfig --odgc --odgt
    
    Run Code Online (Sandbox Code Playgroud)
  2. mesa(开源驱动程序),你可以使用RadeonTop

    查看您的 GPU 利用率,包括总活动百分比和单个块。

  • 我正在使用官方 [radeon 专有驱动程序](https://www.amd.com/en/support/kb/release-notes/rn-amdgpu-unified-linux-20-20),但 `aticonfig` 命令确实不存在 '__') (2认同)
  • @Kokizzu 7 年很长一段时间,Linux 变化很大:) (2认同)

小智 14

您可以使用nvtop,它类似于htopNVIDIA GPU。链接:https : //github.com/Syllo/nvtop

在此处输入图片说明


Xue*_*Pan 7

最近,我写了一个名为监控工具nvitop,在互动NVIDIA 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

注意nvitop是在GPLv3 许可发布的。请随意将其用作您自己项目的包或依赖项。但是,如果您想添加或修改 的某些功能nvitop,或将 的某些源代码复制nvitop到您自己的代码中,则源代码也应在 GPLv3 许可下发布。


Ric*_*ith 5

我已经让进程终止(可能被终止或崩溃)并继续使用资源,但未在nvidia-smi. 通常这些进程只占用 GPU 内存。

如果您认为您有一个进程正在使用 GPU 上的资源,并且它没有显示在 中nvidia-smi,您可以尝试运行此命令来仔细检查。它将显示哪些进程正在使用您的 GPU。

sudo fuser -v /dev/nvidia*
Run Code Online (Sandbox Code Playgroud)

这适用于 EL7、Ubuntu 或其他发行版,它们的 nvidia 设备可能会列在另一个名称/位置下。