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