nvidia-smi Explicación de utilización de la GPU volátil?

Sé que nvidia-smi -l 1 dará el uso de la GPU cada segundo (similar al siguiente). Sin embargo, agradecería una explicación sobre lo que realmente significa Volatile GPU-Util . ¿Es esa la cantidad de SMs usados ​​sobre el SM total, o la ocupación, o alguna otra cosa?

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

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

No le dice nada acerca de cuántos SM se usaron, o qué tan “ocupado” estaba el código, o qué estaba haciendo exactamente, o de qué manera podría haber estado usando la memoria.

El (los) reclamo (s) anterior (es) se pueden verificar sin demasiada dificultad utilizando un ejercicio de microenmarque (ver a continuación).

No sé cómo definir exactamente el período de tiempo, pero dado que en general solo es una medición muestreada (es decir, nvidia-smi informa una medición muestreada tan a menudo como la encuesta) no creo que deba ser tan importante para uso general o 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 . También es posible descubrir el período de tiempo de muestreo utilizando técnicas de microenmarcado.

Además, la palabra “volátil” no pertenece a este elemento de datos en nvidia-smi . Está malinterpretando el formato de salida.

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

 #include  #include  #include  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>>(); usleep(my_delay);} return 0; } 

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