web-dev-qa-db-fra.com

Surveillance de l'utilisation du GPU (CUDA)

J'ai installé la boîte à outils CUDA sur mon ordinateur et lancé le projet BOINC sur GPU. Dans BOINC, je peux voir qu'il fonctionne sur GPU, mais y a-t-il un outil qui peut me montrer plus de détails sur ce qui fonctionne sur GPU - l'utilisation du GPU et l'utilisation de la mémoire?

249
pbm

Pour les GPU Nvidia, il existe un outil nvidia-smi qui peut afficher l'utilisation de la mémoire, l'utilisation du GPU et la température du GPU. Il existe également une liste de processus de calcul et quelques options supplémentaires, mais ma carte graphique (GeForce 9600 GT) n'est pas entièrement prise en charge.

Sun May 13 20:02:49 2012       
+------------------------------------------------------+                       
| NVIDIA-SMI 3.295.40   Driver Version: 295.40         |                       
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  GeForce 9600 GT           | 0000:01:00.0  N/A    |       N/A        N/A |
|   0%   51 C  N/A   N/A /  N/A |  90%  459MB /  511MB |  N/A      Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.           Not Supported                                                 |
+-----------------------------------------------------------------------------+
292
pbm

Pour linux, utilisez nvidia-smi -l 1 vous fournira continuellement les informations d'utilisation du processeur graphique, avec un intervalle de rafraîchissement de 1 seconde.

80
qed

Récemment, j'ai écrit un simple utilitaire de ligne de commande appelé gpustat (qui est un wrapper de nvidia-smi): veuillez consulter https://github.com/wookayin/gpustat .

68
Jongwook Choi

Pour les GPU Intel, il existe le intel-gpu-tools de http://intellinuxgraphics.org/ projet, qui apporte la commande intel_gpu_top (entre autres choses). Il est similaire à top et htop, mais spécifiquement pour le GPU Intel.

   render busy:  18%: ███▋                                   render space: 39/131072
bitstream busy:   0%:                                     bitstream space: 0/131072
  blitter busy:  28%: █████▋                                blitter space: 28/131072

          task  percent busy
           GAM:  33%: ██████▋                 vert fetch: 0 (0/sec)
          GAFS:   3%: ▋                       prim fetch: 0 (0/sec)
            VS:   0%:                      VS invocations: 559188 (150/sec)
            SF:   0%:                      GS invocations: 0 (0/sec)
            VF:   0%:                           GS prims: 0 (0/sec)
            DS:   0%:                      CL invocations: 186396 (50/sec)
            CL:   0%:                           CL prims: 186396 (50/sec)
           SOL:   0%:                      PS invocations: 8191776208 (38576436/sec)
            GS:   0%:                      PS depth pass: 8158502721 (38487525/sec)
            HS:   0%:                      
            TE:   0%:                      
          GAFM:   0%:                      
           SVG:   0%:                      
55
jippie

nvidia-smi ne fonctionne pas sur certaines machines Linux (renvoie N/A pour de nombreuses propriétés). Vous pouvez utiliser nvidia-settings à la place (c'est aussi ce que mat kelcey a utilisé dans son script python script).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

Vous pouvez aussi utiliser:

watch -n0.1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"

pour une surveillance continue.

36
Jonathan

Pour Linux, j'utilise cet outil de type HTOP que j'ai écrit moi-même. Il surveille et donne un aperçu de la température du GPU ainsi que de l'utilisation du cœur/VRAM/PCI-E et du bus mémoire. Cependant, il ne surveille pas ce qui fonctionne sur le GPU.

gmonitor

enter image description here

20
Mountassir El Hafi

Pour être complet, AMD a deux options:

  1. fglrx (pilotes à source fermée).

    $ aticonfig --odgc --odgt
    
  2. mesa (pilotes open source), vous pouvez utiliser RadeonTop .

    Affichez votre utilisation du processeur graphique, à la fois pour le pourcentage d'activité total et les blocs individuels.

16
kevinf

J'ai une carte vidéo GeForce 1060 GTX et j'ai trouvé que la commande suivante me donne des informations sur l'utilisation de la carte, la température, la vitesse du ventilateur et la consommation d'énergie:

$ nvidia-smi --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu

Vous pouvez voir la liste de toutes les options de requête avec:

$ nvidia-smi --help-query-gpu
14
lyubomir

J'ai vu des processus se terminer (probablement tués ou plantés) et continuer à utiliser des ressources, mais je n'étais pas répertorié dans nvidia-smi. Habituellement, ces processus prenaient simplement de la mémoire gpu.

Si vous pensez que vous avez un processus utilisant des ressources sur un GPU et qu'il n'est pas affiché dans nvidia-smi, vous pouvez essayer d'exécuter cette commande pour vérifier. Il vous montrera quels processus utilisent vos GPU.

Sudo fuser -v /dev/nvidia*

Cela fonctionne sur EL7, Ubuntu ou d'autres distributions peuvent avoir leurs appareils nvidia répertoriés sous un autre nom/emplacement.

3
Rick Smith

Vous pouvez utiliser nvtop, c'est similaire à htop mais pour les GPU NVIDIA. Lien: https://github.com/Syllo/nvtop

3
karl71

Pour OS X

Y compris Mountain Lion

Menus iStat

Hors Mountain Lion

atMonitor

La dernière version d'atMonitor pour prendre en charge les fonctionnalités liées au GPU est atMonitor 2.7.1.

- et le lien vers 2.7.1 fournit 2.7b.

Pour la version la plus récente de l'application, atMonitor - FAQ explique:

Pour rendre atMonitor compatible avec MacOS 10.8, nous avons supprimé toutes les fonctionnalités liées au GPU.

J'ai expérimenté avec 2.7b alias 2.7.1 sur Mountain Lion avec un MacBookPro5,2 avec NVIDIA GeForce 9600M GT. L'application a fonctionné pendant quelques secondes avant de quitter, elle a montré la température mais pas l'utilisation:

screenshot of atMonitor 2.7b on Mountain Lion

3
Graham Perrin

Glances a un plugin qui montre l'utilisation du GPU et l'utilisation de la mémoire.

enter image description here

http://glances.readthedocs.io/en/stable/aoa/gpu.html

Utilise la bibliothèque nvidia-ml-py3: https://pypi.python.org/pypi/nvidia-ml-py

3
coreindustries

pour nvidia sur linux j'utilise le script python qui utilise un délai optionnel et répète comme iostat et vmstat

https://Gist.github.com/matpalm/9c0c7c6a6f3681a0d39d

$ gpu_stat.py 1 2
{"util":{"PCIe":"0", "memory":"10", "video":"0", "graphics":"11"}, "used_mem":"161", "time": 1424839016}
{"util":{"PCIe":"0", "memory":"10", "video":"0", "graphics":"9"}, "used_mem":"161", "time":1424839018}
2
mat kelcey

La fonction suivante ajoute des informations telles que le PID, le nom d'utilisateur, l'utilisation du processeur, l'utilisation de la mémoire, l'utilisation de la mémoire du GPU, les arguments du programme et la durée d'exécution des processus en cours d'exécution sur le GPU, à la sortie de nvidia-smi:

function better-nvidia-smi () {
    nvidia-smi
    join -1 1 -2 3 \
        <(nvidia-smi --query-compute-apps=pid,used_memory \
                     --format=csv \
          | sed "s/ //g" | sed "s/,/ /g" \
          | awk 'NR<=1 {print toupper($0)} NR>1 {print $0}' \
          | sed "/\[NotSupported\]/d" \
          | awk 'NR<=1{print $0;next}{print $0| "sort -k1"}') \
        <(ps -a -o user,pgrp,pid,pcpu,pmem,time,command \
          | awk 'NR<=1{print $0;next}{print $0| "sort -k3"}') \
        | column -t
}

Exemple de sortie:

$ better-nvidia-smi
Fri Sep 29 16:52:58 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 378.13                 Driver Version: 378.13                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 730      Off  | 0000:01:00.0     N/A |                  N/A |
| 32%   49C    P8    N/A /  N/A |    872MiB /   976MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
|   1  Graphics Device     Off  | 0000:06:00.0     Off |                  N/A |
| 23%   35C    P8    17W / 250W |    199MiB / 11172MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
|    1      5113    C   python                                         187MiB |
+-----------------------------------------------------------------------------+
PID   USED_GPU_MEMORY[MIB]  USER    PGRP  %CPU  %MEM   TIME      COMMAND
9178  187MiB                tmborn  9175  129   2.6    04:32:19  ../path/to/python script.py args 42
1
Lenar Hoyt

Vous pouvez utiliser

nvidia-smi pmon -i 0

pour surveiller chaque processus dans le GPU 0. y compris le mode de calcul/graphique, l'utilisation de sm, l'utilisation de mémoire, l'utilisation d'encodeur, l'utilisation de décodeur.

1
changqi.xia

Ce script est plus lisible et est conçu pour les mods et extensions faciles.

Vous pouvez remplacer gnome-terminal par votre programme de fenêtre de terminal préféré.


#! /bin/bash

if [ "$1" = "--guts" ]; then
    echo; echo "    ctrl-c to gracefully close"
    f "$a"
    f "$b"
    exit 0; fi

# easy to customize here using "nvidia-smi --help-query-gpu" as a guide
a='--query-gpu=pstate,memory.used,utilization.memory,utilization.gpu,encoder.stats.sessionCount'
b='--query-gpu=encoder.stats.averageFps,encoder.stats.averageLatency,temperature.gpu,power.draw'
p=0.5    # refresh period in seconds
s=110x9  # view port as width_in_chars x line_count

c="s/^/    /; s/, +/\t/g"
t="`echo '' |tr '\n' '\t'`"
function f() { echo; nvidia-smi --format=csv "$1" |sed -r "$c" |column -t "-s$t" "-o   "; }
export c t a b; export -f f
gnome-terminal --hide-menubar --geometry=$s -- watch -t -n$p "`readlink -f \"$0\"`" --guts

#

Licence: GNU GPLv2, TranSeed Research

0
Douglas Daseeco

Je ne l'ai pas vu dans les réponses disponibles (sauf peut-être dans un commentaire), donc j'ai pensé que j'ajouterais que vous pouvez obtenir un rafraîchissement plus agréable nvidia-smi avec watch . Cela rafraîchit l'écran à chaque mise à jour plutôt que de défiler constamment.

watch -n 1 nvidia-smi

pour les mises à jour d'une seconde d'intervalle. Remplace le 1 avec tout ce que vous voulez, y compris des fractions de seconde:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
0
Engineero