nvidia-smi Volatils GPU-Utilisation d'explication?
je sais que nvidia-smi -l 1
donnera la GPU d'utilisation de chaque une seconde (de même pour les suivantes). Cependant, j'apprécierais une explication sur ce que Volatile GPU-Util
signifie réellement. Est-ce le nombre de SGS utilisés par rapport au nombre total de SGS, ou l'occupation, ou autre chose?
+-----------------------------------------------------------------------------+
| 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 réponses
Il est un échantillonnage de la mesure sur une période de temps . Pour une période de temps donnée, il indique quel pourcentage de temps un ou plusieurs noyau(s) GPU était actif (c.-à-d. en cours d'exécution).
il ne vous dit rien sur le nombre de SMs utilisés, ou comment" occupé " le code était, ou ce qu'il faisait exactement, ou de quelle manière il a pu utiliser la mémoire.
la(Les) revendication (s) ci-dessus peut (peuvent) être vérifiée (s) sans trop de difficulté en utilisant un exercice de type microbenchmarking (voir ci-dessous).
Je ne sais pas comment définir exactement la période de temps, mais comme il est également dans l'ensemble juste une mesure échantillonnée (i.e. nvidia-smi
rapports une mesure échantillonnée aussi souvent que vous le sondez) Je ne pense pas qu'il devrait être si important pour l'usage général ou la compréhension de l'outil. La période de temps est à l'évidence court, et n'est pas nécessairement liée à l'intervalle d'interrogation, s'il est spécifié, pour nvidia-smi
. Il pourrait être il est également possible de découvrir la période d'échantillonnage en utilisant des techniques de microbenchmarking.
de plus, le mot" Volatile "ne se rapporte pas à ce poste de données dans nvidia-smi
. Vous interprétez mal le format de sortie.
voici un code trivial qui soutient ma demande:
#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;
}
sur mon système, quand j'exécute le code ci-dessus avec un paramètre de ligne de commande de 100, nvidia-smi signalera une utilisation de 99%. Quand je cours avec une ligne de commande paramètre de 1000, nvidia-smi signalera une utilisation d'environ 83%. Quand je l'exécute avec un paramètre de ligne de commande de 10000, nvidia-smi signalera une utilisation d'environ 9%.