nvidia-smi Volatile GPU-Explicación de utilización?


Sé que nvidia-smi -l 1 dará el uso de la GPU cada segundo (de manera similar a lo siguiente). Sin embargo, agradecería una explicación sobre lo que Volatile GPU-Util realmente significa. Es que el número de SMs sobre el total de SMs, o la ocupación, o algo más?

+-----------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------+
Author: talonmies, 2016-12-02

1 answers

Es una medición muestreada durante un período de tiempo. Para un período de tiempo determinado, informa qué porcentaje de tiempo uno o más núcleos de GPU estaban activos (es decir, en ejecución).

No te dice nada sobre cuántos SMS se usaron, o qué tan "ocupado" estaba el código, o qué estaba haciendo exactamente, o de qué manera puede haber estado usando la memoria.

Las afirmaciones anteriores pueden verificarse sin demasiada dificultad utilizando un ejercicio de tipo microbenchmarking(véase más adelante).

Yo no sepa cómo definir el período de tiempo exactamente, pero como también es en general solo una medición muestreada (es decir, nvidia-smi informa una medición muestreada tan a menudo como lo sondea) No creo que deba ser tan importante para el uso general o la comprensión de la herramienta. El período de tiempo es obviamente corto, y no está necesariamente relacionado con el intervalo de sondeo, si se especifica uno, para nvidia-smi. Podría ser posible descubrir el período de tiempo de muestreo utilizando técnicas de microbenchmarking también.

Además, la palabra "Volátil" no se refiere a este elemento de datos en nvidia-smi. Está malinterpretando el formato de salida.

Aquí hay un código trivial que respalda mi afirmación:

#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;
}

En mi sistema, cuando ejecute el código anterior con un parámetro de línea de comandos de 100, nvidia-smi reportará un 99% de utilización. Cuando corro con un parámetro de línea de comandos de 1000, nvidia-smi reportará ~83% de utilización. Cuando lo ejecute con un parámetro de línea de comandos de 10000, nvidia-smi reportará ~9% utilización.

 31
Author: Robert Crovella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-01 11:11:22