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 |
+-----------------------------------------------------------------------------+
28
demandé sur talonmies 2016-12-02 20:31:47

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

31
répondu Robert Crovella 2017-06-01 11:11:22