85 votes

Explication de l'utilisation de GPU volatile par nvidia-smi?

Je sais que nvidia-smi -l 1 donnera l'utilisation du processeur graphique toutes les secondes (de la même manière que les suivantes). Cependant, j'apprécierais une explication sur ce que signifie réellement Volatile GPU-Util . S'agit-il du nombre de MS utilisés par rapport au total, ou de 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 |
+-----------------------------------------------------------------------------+
 

82voto

Robert Crovella Points 38183

C'est un échantillonnage de la mesure sur une période de temps. Pour une période de temps donnée, il indique quel est le pourcentage de temps d'une ou plusieurs GPU noyau(s) active (c'est à dire en cours d'exécution).

Elle ne vous dit pas quelque chose sur la façon dont beaucoup de SMs ont été utilisés, ou comment "occupé" le code a été, ou ce qu'il était entrain de faire, ou de quelle manière il peut avoir été à l'aide de la mémoire.

Au-dessus de la réclamation(s) peut être vérifiée sans trop de difficulté, à l'aide d'un microbenchmarking-type d'exercice (voir ci-dessous).

Je ne sais pas comment définir la période de temps exactement, mais comme il est aussi globalement juste un échantillonnage de la mesure (c'est à dire nvidia-smi rapports d'un échantillonnés mesure aussi souvent que vous le sondage d'elle) je ne pense pas qu'il devrait être si important que cela pour un usage général ou de 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 possible de découvrir le temps d'échantillonnage de la période à l'aide de microbenchmarking techniques aussi.

Aussi, le mot "Volatile" ne font pas partie de cet élément de données en nvidia-smi. Vous êtes erreur de lecture, le format de sortie.

Voici un trivial code qui prend en charge 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, lorsque j'exécute le code ci-dessus avec un paramètre de ligne de commande de 100, nvidia-pmi auront le rapport de 99% de l'utilisation. Quand je lance avec un paramètre de ligne de commande de 1000, nvidia-pmi auront le rapport ~83% d'utilisation. Quand je le lance avec un paramètre de ligne de commande de 10000, nvidia-pmi auront le rapport ~9% d'utilisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X