ultima supported para instal gpus geforce developer cuda resource-monitor

supported - comando superior para GPU usando CUDA



instal cuda (9)

Use el argumento "--query-compute-apps ="

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv

para obtener más ayuda, por favor siga

nvidia-smi --help-query-compute-app

Estoy tratando de monitorear un proceso que usa cuda y MPI, ¿hay alguna manera de que yo pueda hacer esto, algo así como el comando "arriba" pero que también monitorea la GPU?


Para obtener información en tiempo real sobre los recursos utilizados, haga lo siguiente:

nvidia-smi -l 1

Esto recorrerá y llamará a la vista en cada segundo.

Si no desea mantener los rastros de la llamada en bucle en el historial de la consola, también puede hacer:

watch -n0.1 nvidia-smi

Donde 0.1 es el intervalo de tiempo, en segundos.


Descargue e instale el último controlador CUDA estable (4.2) desde here . En Linux, nVidia-smi 295.41 te ofrece exactamente lo que quieres. usa nvidia-smi :

[root@localhost release]# nvidia-smi Wed Sep 26 23:16:16 2012 +------------------------------------------------------+ | NVIDIA-SMI 3.295.41 Driver Version: 295.41 | |-------------------------------+----------------------+----------------------+ | Nb. Name | Bus Id Disp. | Volatile ECC SB / DB | | Fan Temp Power Usage /Cap | Memory Usage | GPU Util. Compute M. | |===============================+======================+======================| | 0. Tesla C2050 | 0000:05:00.0 On | 0 0 | | 30% 62 C P0 N/A / N/A | 3% 70MB / 2687MB | 44% Default | |-------------------------------+----------------------+----------------------| | Compute processes: GPU Memory | | GPU PID Process name Usage | |=============================================================================| | 0. 7336 ./align 61MB | +-----------------------------------------------------------------------------+

EDITAR: en los últimos controladores de NVIDIA, este soporte está limitado a las Tarjetas Tesla.


Esto puede no ser elegante, pero puedes intentarlo

while true; do sleep 2; nvidia-smi; done

También probé el método de @Edric, que funciona, pero prefiero el diseño original de nvidia-smi .


Existe Prometheus GPU Metrics Exporter (PGME) que aprovecha el nvidai-smi binary. Puedes probar esto. Una vez que tenga el exportador en ejecución, puede acceder a él a través de http://localhost:9101/metrics . Para dos GPU, el resultado de la muestra es el siguiente:

temperature_gpu{gpu="TITAN X (Pascal)[0]"} 41 utilization_gpu{gpu="TITAN X (Pascal)[0]"} 0 utilization_memory{gpu="TITAN X (Pascal)[0]"} 0 memory_total{gpu="TITAN X (Pascal)[0]"} 12189 memory_free{gpu="TITAN X (Pascal)[0]"} 12189 memory_used{gpu="TITAN X (Pascal)[0]"} 0 temperature_gpu{gpu="TITAN X (Pascal)[1]"} 78 utilization_gpu{gpu="TITAN X (Pascal)[1]"} 95 utilization_memory{gpu="TITAN X (Pascal)[1]"} 59 memory_total{gpu="TITAN X (Pascal)[1]"} 12189 memory_free{gpu="TITAN X (Pascal)[1]"} 1738 memory_used{gpu="TITAN X (Pascal)[1]"} 10451


No conozco nada que combine esta información, pero puede usar la herramienta nvidia-smi para obtener los datos brutos, de esa manera (gracias a @jmsu por la sugerencia de -l):

$ nvidia-smi -q -g 0 -d UTILIZATION -l ==============NVSMI LOG============== Timestamp : Tue Nov 22 11:50:05 2011 Driver Version : 275.19 Attached GPUs : 2 GPU 0:1:0 Utilization Gpu : 0 % Memory : 0 %


Otro enfoque de monitoreo útil es usar ps filtrado en los procesos que consumen sus GPU. Yo uso este mucho:

ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*`

Eso mostrará todos los procesos que utilizan la GPU nvidia y algunas estadísticas sobre ellos. lsof ... recupera una lista de todos los procesos que utilizan una GPU nvidia propiedad del usuario actual, y ps -p ... muestra los resultados de ps para esos procesos. ps f muestra un buen formato para las relaciones / jerarquías de proceso hijo / principal y -o especifica un formato personalizado. Esa es similar a solo hacer ps u pero agrega la identificación del grupo de procesos y elimina algunos otros campos.

Una ventaja de esto sobre nvidia-smi es que mostrará las horquillas de proceso así como también los procesos principales que usan la GPU.

Sin embargo, una desventaja es que está limitada a procesos propiedad del usuario que ejecuta el comando. Para abrirlo a todos los procesos propiedad de cualquier usuario, agrego un sudo antes del lsof .

Por último, lo combino con watch para obtener una actualización continua. Entonces, al final, parece que:

watch -n 0.1 ''ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvidia*`''

Que tiene salida como:

Every 0.1s: ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvi... Mon Jun 6 14:03:20 2016 USER PGRP PID %CPU %MEM STARTED TIME COMMAND grisait+ 27294 50934 0.0 0.1 Jun 02 00:01:40 /opt/google/chrome/chrome --type=gpu-process --channel=50877.0.2015482623 grisait+ 27294 50941 0.0 0.0 Jun 02 00:00:00 /_ /opt/google/chrome/chrome --type=gpu-broker grisait+ 53596 53596 36.6 1.1 13:47:06 00:05:57 python -u process_examples.py grisait+ 53596 33428 6.9 0.5 14:02:09 00:00:04 /_ python -u process_examples.py grisait+ 53596 33773 7.5 0.5 14:02:19 00:00:04 /_ python -u process_examples.py grisait+ 53596 34174 5.0 0.5 14:02:30 00:00:02 /_ python -u process_examples.py grisait+ 28205 28205 905 1.5 13:30:39 04:56:09 python -u train.py grisait+ 28205 28387 5.8 0.4 13:30:49 00:01:53 /_ python -u train.py grisait+ 28205 28388 5.3 0.4 13:30:49 00:01:45 /_ python -u train.py grisait+ 28205 28389 4.5 0.4 13:30:49 00:01:29 /_ python -u train.py grisait+ 28205 28390 4.5 0.4 13:30:49 00:01:28 /_ python -u train.py grisait+ 28205 28391 4.8 0.4 13:30:49 00:01:34 /_ python -u train.py


Simplemente use watch nvidia-smi , emitirá el mensaje por intervalos de 2 segundos por defecto.

Por ejemplo, como la imagen de abajo:

También puede usar watch -n 5 nvidia-smi (-n intervalo de 5 por 5s).


También encuentro gpustat muy útil. En se puede instalar con pip install gpustat , e imprime el desglose de uso por procesos o usuarios.