我知道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 |
+-----------------------------------------------------------------------------+
答案 0 :(得分:48)
是a sampled measurement over a time period。在给定的时间段内,它会报告一个或多个GPU内核处于活动状态(即正在运行)的时间百分比。
它没有告诉你任何关于使用了多少SM的信息,或者代码的“繁忙程度”,或者它正在做什么,或者它以何种方式使用内存。
使用微基准测试类型练习可以毫不费力地验证上述声明(见下文)。
我不知道如何准确定义时间段,但因为它总体上只是一个采样测量(即nvidia-smi
报告一个采样测量,就像你轮询它一样)我不认为对于一般用法或对工具的理解应该是非常重要的。时间段显然很短,并且不一定与nvidia-smi
的轮询间隔(如果指定了一个)有关。也可以使用微基准测试技术揭示采样时间段。
此外,“易失性”一词与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%的利用率。
答案 1 :(得分:0)
nvidia-smi 上的“Volatile”不是 GPU-Util 的一部分,而是“Volatile Uncorr”的一部分。 ECC',显示自上次加载驱动程序以来 GPU 上发生的未纠正错误的数量。这里有关于 nvidia-smi 中所有内容的好文章:
https://medium.com/analytics-vidhya/explained-output-of-nvidia-smi-utility-fc4fbee3b124