Najlepsze narzędzie do monitorowania aktywności CUDA na GPU

Staram się monitorować proces, który używa CUDA i MPI, czy jest jakiś sposób mogę to zrobić, coś w rodzaju polecenia "top" , ale to monitoruje GPU też?

Author: einpoklum, 2011-11-22

15 answers

Uważam gpustat bardzo przydatne. In może być zainstalowany za pomocą pip install gpustat i wyświetla podział użycia według procesów lub użytkowników.

Tutaj wpisz opis obrazka

 104
Author: Alleo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 18:52:31

Aby uzyskać wgląd w czasie rzeczywistym na używane zasoby, wykonaj:

nvidia-smi -l 1

Spowoduje to zapętlenie i wywołanie widoku w każdej sekundzie.

Jeśli nie chcesz zachować śladów zapętlonego połączenia w historii konsoli, możesz to zrobić:

watch -n0.1 nvidia-smi

Gdzie 0.1 jest interwałem czasu, w sekundach.

Tutaj wpisz opis obrazka

 165
Author: Guillaume Chevalier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-30 06:53:26

Nie jestem świadomy niczego, co łączy te informacje, ale możesz użyć narzędzia nvidia-smi, Aby uzyskać surowe dane, w ten sposób (dzięki @jmsu za końcówkę na-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 %
 84
Author: Edric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-22 11:51:54

Użyj argumentu "--query-compute-apps= "

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

Aby uzyskać dalszą pomoc, wykonaj

nvidia-smi --help-query-compute-app
 20
Author: Deepak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-28 01:03:54

Pobierz i zainstaluj najnowszy stabilny sterownik CUDA (4.2) z tutaj. W Linuksie nVidia-smi 295.41 daje dokładnie to, czego chcesz. użycie 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  |
+-----------------------------------------------------------------------------+

EDIT: w najnowszych sterownikach NVIDIA ta obsługa jest ograniczona do kart Tesla.

 19
Author: lashgar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-28 10:42:18

Po prostu użyj watch nvidia-smi, domyślnie wyświetli wiadomość w interwale 2S.

Na przykład, jak na poniższym obrazku:

Tutaj wpisz opis obrazka

Możesz również użyć watch -n 5 nvidia-smi (- N 5 przez interwał 5s).

 19
Author: Jayhello,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-29 03:29:26

Innym użytecznym podejściem do monitorowania jest użycie ps filtrowanych na procesach, które zużywają Twoje GPU. Często używam tego:

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

To pokaże wszystkie procesy wykorzystujące GPU nvidia i kilka statystyk na ich temat. lsof ... pobiera listę wszystkich procesów za pomocą GPU nvidia należącego do bieżącego użytkownika, a ps -p ... pokazuje wyniki dla tych procesów. ps f pokazuje ładne Formatowanie dla relacji/hierarchii procesów potomnych / rodzicielskich, a -o określa niestandardowe formatowanie. Ten jest podobnie jak po prostu robi ps u, ale dodaje ID grupy procesów i usuwa niektóre inne pola.

Jedną z zalet tego nad nvidia-smi jest to, że wyświetla zarówno widły procesów, jak i główne procesy, które używają GPU.

Wadą jest jednak ograniczenie do procesów należących do użytkownika, który wykonuje polecenie. Aby otworzyć go dla wszystkich procesów należących do dowolnego użytkownika, dodaję sudo przed lsof.

Na koniec łączę go z watch, aby uzyskać ciągłą aktualizację. Tak więc w koniec, wygląda tak:

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

Który ma wyjście typu:

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
 17
Author: grisaitis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-06 18:15:15

Możesz spróbować nvtop, który jest podobny do powszechnie używanego narzędzia htop, ale dla GPU NVIDIA. Oto zrzut ekranu nvtop z tego w akcji.

Zrzut ekranu nvtop w akcji

 14
Author: Rodrigo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-09 12:46:55

To może nie jest eleganckie, ale możesz spróbować

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

Wypróbowałem również metodę @ Edric, która działa, ale wolę oryginalny układ nvidia-smi.

 4
Author: skyuuka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-10 00:02:40

Jeśli chcesz tylko znaleźć proces, który jest uruchomiony na gpu, możesz po prostu użyć następującego polecenia:

lsof /dev/nvidia*

Dla mnie nvidia-smi i watch -n 1 nvidia-smi są wystarczające w większości przypadków. Czasami nvidia-smi nie pokazuje żadnego procesu, ale pamięć gpu jest zużyta, więc muszę użyć powyższego polecenia, aby znaleźć procesy.

 3
Author: JasonWayne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-07 01:17:22

Utworzyłem plik wsadowy z następującym kodem na komputerze z systemem windows, aby monitorować co sekundę. Dla mnie działa.

:loop
cls
"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi"
timeout /T 1
goto loop

Nvidia-smi exe zazwyczaj znajduje się w "C:\Program Files\NVIDIA Corporation" jeśli chcesz uruchomić polecenie tylko raz.

 2
Author: Karthik N G,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-14 12:28:11

W Linux Mint, a najprawdopodobniej Ubuntu, możesz spróbować "nvidia-smi --loop=1"

 2
Author: Ebram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-27 22:58:39

Możesz użyć programu monitorującego spojrzenia z jego wtyczką GPU monitoring :

  • open source
  • aby zainstalować: sudo apt-get install -y python-pip; sudo pip install glances[gpu]
  • do uruchomienia: sudo glances

Tutaj wpisz opis obrazka

Monitoruje również procesor, dysk IO, przestrzeń dyskową, Sieć i kilka innych rzeczy:

Tutaj wpisz opis obrazka

 1
Author: Franck Dernoncourt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-09 20:19:08

Istnieje Prometheus GPU Metrics Exporter (PGME) , który wykorzystuje plik binarny nvidai-smi. Możesz to wypróbować. Po uruchomieniu eksportera możesz uzyskać do niego dostęp poprzez http://localhost:9101/metrics . Dla dwóch procesorów graficznych przykładowy wynik wygląda następująco:

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
 0
Author: Abu Shoeb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-12 18:11:56

Możesz użyć nvidia-smi pmon -i 0 do monitorowania każdego procesu w GPU 0. w tym tryb obliczeniowy, użycie sm, użycie pamięci, użycie enkodera, użycie dekodera.

 0
Author: changqi.xia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-17 07:24:43