【问题标题】:nvidia-smi Volatile GPU-Utilization explanation?nvidia-smi Volatile GPU-Utilization 解释?
【发布时间】:2017-04-17 16:47:47
【问题描述】:

我知道nvidia-smi -l 1 会每隔一秒提供一次 GPU 使用率(类似于以下内容)。但是,我希望能解释一下 Volatile GPU-Util 的真正含义。这是使用的 SM 数量超过总 SM 的数量,还是占用率,还是其他什么?

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48                 Driver Version: 367.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K20c          Off  | 0000:03:00.0     Off |                    0 |
| 30%   41C    P0    53W / 225W |      0MiB /  4742MiB |     96%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla K20c          Off  | 0000:43:00.0     Off |                    0 |
| 36%   49C    P0    95W / 225W |   4516MiB /  4742MiB |     63%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    1      5193    C   python                                        4514MiB |
+-----------------------------------------------------------------------------+

【问题讨论】:

  • 对于那些想知道的人,SM 表示 Streaming Multiprocessor,它的解释是 here.
  • Volatile 来自顶行,如Volatile Uncorr. ECC - 这听起来像是一个严重的内存错误。上面的输出中有 0 个。

标签: cuda nvidia gpgpu gpu


【解决方案1】:

它是a sampled measurement over a time period。在给定的时间段内,它报告一个或多个 GPU 内核处于活动状态(即运行)的时间百分比。

它不会告诉您使用了多少 SM,或者代码有多“忙”,或者它到底在做什么,或者它可能以何种方式使用了内存。

可以使用微基准测试类型的练习轻松验证上述声明(见下文)。

基于 Nvidia docs,采样周期可能在 1 秒到 1/6 秒之间,具体取决于产品。但是,句点应该不会对您如何解释结果产生太大影响。

此外,“挥发性”一词与nvidia-smi 中的此数据项无关。您误读了输出格式。

这是支持我的主张的简单代码:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

const long long tdelay=1000000LL;
const int loops = 10000;
const int hdelay = 1;

__global__ void dkern(){

  long long start = clock64();
  while(clock64() < start+tdelay);
}

int main(int argc, char *argv[]){

  int my_delay = hdelay;
  if (argc > 1) my_delay = atoi(argv[1]);
  for (int i = 0; i<loops; i++){
    dkern<<<1,1>>>();
    usleep(my_delay);}

  return 0;
}

在我的系统上,当我以 100 的命令行参数运行上述代码时,nvidia-smi 将报告 99% 的利用率。当我使用 1000 的命令行参数运行时,nvidia-smi 将报告 ~83% 的利用率。当我使用 10000 的命令行参数运行它时,nvidia-smi 将报告 ~9% 的利用率。

【讨论】:

  • 有没有办法获得诸如使用了多少 SM 或 SM 有多“忙”之类的指标?是否有任何未显示在 nvidia-smi 中的 NVML API 调用可以帮助公开这些信息?
【解决方案2】:

nvidia-smi 上的“Volatile”不是 GPU-Util 的一部分,它是“Volatile Uncorr”的一部分。 ECC',它显示自上次驱动程序加载以来 GPU 上发生的未纠正错误的数量。在 nvidia-smi 这里有一篇很好的文章:

https://medium.com/analytics-vidhya/explained-output-of-nvidia-smi-utility-fc4fbee3b124

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 2021-02-18
    • 2012-02-29
    • 2015-08-20
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2021-11-01
    相关资源
    最近更新 更多