2016-12-02 15 views
17

Я знаю, что nvidia-smi -l 1 будет использовать GPU каждую секунду (аналогично следующему). Тем не менее, я был бы признателен за то, что на самом деле означает Volatile GPU-Util. Является ли это количеством используемых SM на общих SM, или заполнением, или чем-то еще?nvidia-smi Volatile GPU-Утилизация объяснение?

+-----------------------------------------------------------------------------+ 
| 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 | 
+-----------------------------------------------------------------------------+ 
+4

Для тех, кто задается вопросом, SM означает потоковый многопроцессор, и это объясняется [здесь.] (Https://stackoverflow.com/questions/3519598/streaming-multiprocessors-blocks-and-threads-cuda) – Davidmh

ответ

21

Это a sampled measurement over a time period. В течение заданного периода времени он сообщает, какой процент времени был активным (или работает) ядро ​​(я) GPU.

Он ничего не говорит о том, сколько SM было использовано или как «занят» код, или что он делает точно, или каким образом он мог использовать память.

Вышеуказанные претензии могут быть проверены без особых трудностей с помощью упражнения на основе микробизнеса (см. Ниже).

Я не знаю, как точно определить период времени, но поскольку это также общее просто выборочное измерение (то есть nvidia-smi сообщает одно измеренное измерение так часто, как вы его опросили). Я не думаю, что это должно быть так важно для общего использования или понимания инструмента. Период времени, очевидно, короткий и не обязательно связан с интервалом опроса, если он указан, для nvidia-smi. Возможно также выявить период времени выборки, используя также методы микромаркетинга.

Кроме того, слово «Volatile» не относится к этому элементу данных в 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-сми сообщат 99% утилизации. Когда я запускаю параметр командной строки 1000, nvidia-smi сообщит о загрузке ~ 83%. Когда я запустил его с параметром командной строки 10000, nvidia-smi сообщит об использовании ~ 9%.

 Смежные вопросы

  • Нет связанных вопросов^_^