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?
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 |
+-----------------------------------------------------------------------------+
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.
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 .
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%:
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.
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.
Pour être complet, AMD a deux options:
fglrx (pilotes à source fermée).
$ aticonfig --odgc --odgt
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.
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
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.
Vous pouvez utiliser nvtop
, c'est similaire à htop
mais pour les GPU NVIDIA. Lien: https://github.com/Syllo/nvtop
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:
Glances a un plugin qui montre l'utilisation du GPU et l'utilisation de la mémoire.
http://glances.readthedocs.io/en/stable/aoa/gpu.html
Utilise la bibliothèque nvidia-ml-py3: https://pypi.python.org/pypi/nvidia-ml-py
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}
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
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.
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
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