Monitoreo de uso de GPU (CUDA)

223

Instalé el kit de herramientas CUDA en mi computadora y comencé el proyecto BOINC en la GPU. En BOINC puedo ver que se está ejecutando en GPU, pero ¿hay alguna herramienta que pueda mostrarme más detalles sobre lo que se está ejecutando en GPU: uso de GPU y uso de memoria?

pbm
fuente

Respuestas:

251

Para las GPU Nvidia, existe una herramienta nvidia-smique puede mostrar el uso de la memoria, la utilización de la GPU y la temperatura de la GPU. También hay una lista de procesos informáticos y algunas opciones más, pero mi tarjeta gráfica (GeForce 9600 GT) no es totalmente compatible.

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                                                 |
+-----------------------------------------------------------------------------+
pbm
fuente
1
Mi chip ION tampoco muestra uso. : /
Raphael
123
watch -n 0.5 nvidia-smi, mantendrá la salida actualizada sin llenar su terminal con salida.
Bar
31
@Bar Buen consejo. watch -d -n 0.5 nvidia-smiSerá aún mejor.
zeekvfu
3
@zeekvfu Creo que sería mejor explicar qué hace la -dbandera
donlucacorleone
55
@donlucacorleone man watchnos dice que la -dbandera resalta las diferencias entre los resultados, por lo que puede ayudar a resaltar qué métricas están cambiando con el tiempo.
David Kaczynski el
71

Para Linux, el uso nvidia-smi -l 1le proporcionará continuamente la información de uso de la GPU, con un intervalo de actualización de 1 segundo.

qed
fuente
74
Prefiero usar watch -n 1 nvidia-smipara obtener actualizaciones continuas sin llenar el terminal con salida
ali_m
1
Usar watch significa que comienzas un nuevo proceso cada segundo para sondear las cartas. Es mejor hacer -l, y no cada segundo, sugeriría cada minuto o cada 5 minutos.
Mick T
55

Para Intel GPU existe la intel-gpu-toolsde http://intellinuxgraphics.org/ proyecto, que trae el comando intel_gpu_top(entre otras cosas). Es similar a topy htop, pero específicamente para la 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%:                      
jippie
fuente
35

nvidia-smino funciona en algunas máquinas Linux (devuelve N / A para muchas propiedades). En su nvidia-settingslugar, puede usar (esto también es lo que mat kelcey usó en su script de python).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

También puedes usar:

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

para monitoreo continuo.

Jonathan
fuente
44
Me alegro de que esto no fuera un comentario. Es exactamente lo que estaba buscando cuando me encontré con esta pregunta.
Score_Under
Gracias, esto es lo que funcionó para mí, ya que tengo una tarjeta GeForce que no es compatible con nvidia-smi.
alexg
44
Puede hacer nvidia-settings -q allpara ver qué otros parámetros puede monitorear. Estoy monitoreando GPUCurrentProcessorClockFreqsy GPUCurrentClockFreqs.
alexg
1
Gracias, buena idea consultar todos, ya que cada tarjeta puede tener diferentes cadenas para monitorear.
ruoho ruotsi
Si solo desea el número y nada más (por ejemplo, para conky) use esto:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk
16

Para Linux, uso esta herramienta similar a HTOP que escribí yo mismo. Supervisa y ofrece una visión general de la temperatura de la GPU, así como el uso del núcleo / VRAM / PCI-E y el bus de memoria. Sin embargo, no supervisa lo que se ejecuta en la GPU.

gmonitor

ingrese la descripción de la imagen aquí

Mountassir El Hafi
fuente
1
nvidia-settingsrequiere un X11 en ejecución, que no siempre es el caso.
Victor Sergienko
funciona para mí sin problemas!
Hennadii Madan
15

Para completar, AMD tiene dos opciones:

  1. fglrx (controladores de código cerrado).

    $ aticonfig --odgc --odgt
    
  2. mesa (controladores de código abierto), puede usar RadeonTop .

    Vea la utilización de su GPU, tanto para el porcentaje de actividad total como para los bloques individuales.

kevinf
fuente
13

Tengo una tarjeta de video GeForce 1060 GTX y descubrí que el siguiente comando me da información sobre la utilización de la tarjeta, la temperatura, la velocidad del ventilador y el consumo de energía:

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

Puede ver la lista de todas las opciones de consulta con:

$ nvidia-smi --help-query-gpu
lyubomir
fuente
1
Valdría la pena agregar memory.usedo ( memory.free) también.
Zoltan
3

Para OS X

Incluyendo Mountain Lion

iStat Menus

Excluyendo Mountain Lion

atMonitor

La última versión de atMonitor para admitir funciones relacionadas con GPU es atMonitor 2.7.1.

- y el enlace a 2.7.1 ofrece 2.7b.

Para la versión más reciente de la aplicación, atMonitor - FAQ explica:

Para hacer que atMonitor sea compatible con MacOS 10.8, hemos eliminado todas las funciones relacionadas con la GPU.

Experimenté con 2.7b aka 2.7.1 en Mountain Lion con un MacBookPro5,2 con NVIDIA GeForce 9600M GT. La aplicación se ejecutó durante unos segundos antes de salir, mostró temperatura pero no uso:

                                                  captura de pantalla de atMonitor 2.7b en Mountain Lion

Graham Perrin
fuente
3

He finalizado procesos (probablemente muertos o bloqueados) y sigo usando recursos, pero no figuran en la lista nvidia-smi. Por lo general, estos procesos solo tomaban memoria gpu.

Si cree que tiene un proceso que utiliza recursos en una GPU y no se muestra en él nvidia-smi, puede intentar ejecutar este comando para verificar dos veces. Le mostrará qué procesos están usando sus GPU.

sudo fuser -v /dev/nvidia*

Esto funciona en EL7, Ubuntu u otras distribuciones pueden tener sus dispositivos nvidia listados bajo otro nombre / ubicación.

Rick Smith
fuente
2

para nvidia en linux utilizo el siguiente script de python que usa un retraso opcional y repito como iostat y 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}
mat kelcey
fuente
1

La siguiente función agrega información como PID, nombre de usuario, uso de CPU, uso de memoria, uso de memoria de GPU, argumentos de programa y tiempo de ejecución de procesos que se ejecutan en la GPU, a la salida 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
}

Salida de ejemplo:

$ 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
Lenar Hoyt
fuente
Cuidado, no creo que el pmem dado por ps tenga en cuenta la memoria total de la GPU sino la de la CPU porque ps no es consciente de "Nvidia GPU"
SebMa
0

Este script es más legible y está diseñado para modificaciones y extensiones fáciles.

Puede reemplazar gnome-terminal con su programa de ventana de terminal favorito.


#! /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

#

Licencia: GNU GPLv2, TranSeed Research

Douglas Daseeco
fuente
0

Puedes usar

nvidia-smi pmon -i 0

para monitorear cada proceso en la GPU 0. incluyendo el modo de cómputo / gráfico, uso de sm, uso de memoria, uso de codificador, uso de decodificador.

changqi.xia
fuente
0

No he visto que en las respuestas disponibles (excepto tal vez en un comentario), así que pensé que me gustaría añadir que se puede obtener un refrescante agradable nvidia-smicon watch. Esto actualiza la pantalla con cada actualización en lugar de desplazarse constantemente.

watch -n 1 nvidia-smi

para actualizaciones de un segundo intervalo. Reemplace el 1con lo que quiera, incluidos los segundos fraccionarios:

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