Monitoramento de uso da GPU (CUDA)

223

Instalei o kit de ferramentas CUDA no meu computador e iniciei o projeto BOINC na GPU. No BOINC, vejo que ele está sendo executado na GPU, mas existe uma ferramenta que pode me mostrar mais detalhes sobre o que está sendo executado no uso da GPU - GPU e uso de memória?

pbm
fonte

Respostas:

251

Para as GPUs da Nvidia, existe uma ferramenta nvidia-smique mostra o uso da memória, a utilização da GPU e a temperatura da GPU. Há também uma lista de processos de computação e mais algumas opções, mas minha placa de vídeo (GeForce 9600 GT) não é totalmente suportada.

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
fonte
1
Meu chip ION também não mostra uso. : /
Raphael
123
watch -n 0.5 nvidia-smi, manterá a saída atualizada sem encher seu terminal com a saída.
Bar
31
@ Bar Boa dica. watch -d -n 0.5 nvidia-smiserá ainda melhor.
Zeekvfu 17/01/19
3
@zeekvfu Eu acho que seria melhor para explicar o que faz a -dbandeira de fazer
donlucacorleone
5
O @donlucacorleone man watchnos diz que a -dbandeira destaca as diferenças entre os resultados, para ajudar a destacar quais métricas estão mudando ao longo do tempo.
David Kaczynski
71

Para Linux, o uso nvidia-smi -l 1fornecerá continuamente as informações de uso da GPU, com intervalo de atualização de 1 segundo.

qed
fonte
74
Eu prefiro usar watch -n 1 nvidia-smipara obter atualizações contínuas sem encher o terminal com saída
ali_m
1
Usar o relógio significa iniciar um novo processo a cada segundo para pesquisar os cartões. Melhor fazer -l, e não a cada segundo, sugiro a cada minuto ou a cada 5 minutos.
Mick T
55

Para Intel GPU existe a intel-gpu-toolspartir http://intellinuxgraphics.org/ projeto, que traz o comando intel_gpu_top(entre outras coisas). É semelhante tope htop, mas especificamente para a 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
fonte
35

nvidia-sminão funciona em algumas máquinas Linux (retorna N / A para muitas propriedades). Você pode usar em nvidia-settingsvez disso (também é isso que mat kelcey usou em seu script python).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

Você também pode usar:

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

para monitoramento contínuo.

Jonathan
fonte
4
Ainda bem que isso não foi um comentário. É exatamente o que eu estava procurando quando me deparei com essa pergunta.
Score_Under
Obrigado, foi o que funcionou para mim, pois tenho uma placa GeForce que não é suportada pela nvidia-smi.
22715 alexg
4
Você pode fazer nvidia-settings -q allpara ver quais outros parâmetros você pode monitorar. Estou monitorando GPUCurrentProcessorClockFreqse GPUCurrentClockFreqs.
22715 alexg
1
Obrigado cara, boa ideia consultar todos, pois cada cartão pode ter diferentes strings para monitorar!
Ruoho ruotsi
Se você quiser apenas o número e nada mais (por exemplo, para conky), use este:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk
16

Para Linux, eu uso esse HTOP como ferramenta que eu mesmo escrevi. Ele monitora e fornece uma visão geral da temperatura da GPU, bem como do uso do núcleo / VRAM / PCI-E e do barramento de memória. Porém, ele não monitora o que está sendo executado na GPU.

gmonitor

insira a descrição da imagem aqui

Mountassir El Hafi
fonte
1
nvidia-settingsrequer um X11 em execução, o que nem sempre é o caso.
Victor Sergienko
funciona para mim sem problemas!
Hennadii Madan
15

Para completar, a AMD possui duas opções:

  1. fglrx (drivers de código fechado).

    $ aticonfig --odgc --odgt
    
  2. mesa (drivers de código aberto), você pode usar o RadeonTop .

    Veja a utilização da GPU, tanto para o percentual total de atividade quanto para blocos individuais.

kevinf
fonte
13

Eu tenho uma placa de vídeo GeForce 1060 GTX e descobri que o comando a seguir fornece informações sobre a utilização da placa, temperatura, velocidade da ventoinha e consumo de energia:

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

Você pode ver a lista de todas as opções de consulta com:

$ nvidia-smi --help-query-gpu
lyubomir
fonte
1
Vale a pena adicionar memory.usedou ( memory.free) também.
Zoltan
3

Para OS X

Incluindo o leão da montanha

Menus iStat

Excluindo Leão da Montanha

atMonitor

A última versão do atMonitor para suportar recursos relacionados à GPU é o atMonitor 2.7.1.

- e o link para 2.7.1 fornece 2.7b.

Para a versão mais recente do aplicativo, atMonitor - FAQ explica:

Para tornar o atMonitor compatível com o MacOS 10.8, removemos todos os recursos relacionados à GPU.

Eu experimentei o 2.7b aka 2.7.1 no Mountain Lion com um MacBookPro5,2 com o NVIDIA GeForce 9600M GT. O aplicativo foi executado por alguns segundos antes de sair, mostrou temperatura, mas não uso:

                                                  captura de tela do atMonitor 2.7b no Mountain Lion

Graham Perrin
fonte
3

Eu tive processos encerrados (provavelmente mortos ou travados) e continuo usando recursos, mas não foram listados nvidia-smi. Geralmente esses processos estavam apenas consumindo memória gpu.

Se você acha que possui um processo usando recursos em uma GPU e não está sendo mostrado nvidia-smi, tente executar este comando para verificar novamente. Ele mostrará quais processos estão usando suas GPUs.

sudo fuser -v /dev/nvidia*

Isso funciona no EL7, Ubuntu ou outras distribuições podem ter seus dispositivos nvidia listados com outro nome / local.

Rick Smith
fonte
2

para nvidia no linux eu uso o seguinte script python que usa um atraso opcional e repita como iostat e 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
fonte
1

A função a seguir anexa informações como PID, nome de usuário, uso da CPU, uso de memória, uso de memória GPU, argumentos do programa e tempo de execução dos processos que estão sendo executados no GPU, à saída 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
}

Exemplo de saída:

$ 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
fonte
Cuidado, eu não acho que o PMEM dada pelo ps leva em conta o total de memória da GPU, mas a da CPU porque ps não é "Nvidia GPU" consciente
SebMa
0

Este script é mais legível e foi projetado para mods e extensões fáceis.

Você pode substituir o gnome-terminal pelo seu programa favorito da janela do terminal.


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

#

Licença: GNU GPLv2, TranSeed Research

Douglas Daseeco
fonte
0

Você pode usar

nvidia-smi pmon -i 0

para monitorar todos os processos na GPU 0., incluindo o modo de computação / gráfico, uso de sm, uso de memória, uso de codificador, uso de decodificador.

changqi.xia
fonte
0

Eu não vê-lo nas respostas disponíveis (exceto, talvez, em um comentário), então eu pensei que eu ia acrescentar que você pode obter um refrescante agradável nvidia-smicom watch. Isso atualiza a tela a cada atualização, em vez de rolar constantemente.

watch -n 1 nvidia-smi

para atualizações de intervalo de um segundo. Substitua por o 1que você quiser, incluindo segundos fracionários:

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