Подтвердить что ты не робот

Верхняя команда для GPU с использованием CUDA

Я пытаюсь контролировать процесс, который использует cuda и MPI, есть ли способ сделать это, что-то вроде команды "top", но которая также контролирует GPU?

4b9b3361

Ответ 1

Я нахожу gpustat очень полезным. Может быть установлен с помощью pip install gpustat и распечатывает данные об использовании процессами или пользователями.

enter image description here

Ответ 2

Чтобы получить представление о используемых ресурсах в режиме реального времени, выполните следующие действия:

nvidia-smi -l 1

Это будет циклическим и вызовом просмотра в каждую секунду.

Если вы не хотите сохранять прошлые следы зацикленного вызова в истории консоли, вы также можете:

watch -n0.1 nvidia-smi

Где 0,1 - временной интервал, в секундах.

введите описание изображения здесь

Ответ 3

Я не знаю ничего, что объединяет эту информацию, но вы можете использовать инструмент nvidia-smi для получения необработанных данных, например (спасибо @jmsu для подсказки на -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 %

Ответ 4

Загрузите и установите последний стабильный драйвер CUDA (4.2) из ​​здесь. На linux nVidia-smi 295.41 дает вам именно то, что вы хотите. используйте nvidia-smi:

[[email protected] 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: в последних драйверах NVIDIA эта поддержка ограничена картами Tesla.

Ответ 5

Используйте аргумент "--query-compute-apps ="

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

для получения дополнительной помощи, пожалуйста, следуйте

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

Ответ 6

Еще один полезный подход к мониторингу - использовать ps для фильтрации процессов, которые потребляют ваши графические процессоры. Я использую это много:

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

Это покажет все nvidia GPU-процессы использования и некоторую статистику о них. lsof ... извлекает список всех процессов с использованием графического ядра nvidia, принадлежащего текущему пользователю, и ps -p ... показывает результаты ps для этих процессов. ps f показывает хорошее форматирование для отношений/иерархических отношений между дочерними/родительскими процессами и -o указывает настраиваемое форматирование. Это похоже на просто выполнение ps u, но добавляет идентификатор группы процессов и удаляет некоторые другие поля.

Одним из преимуществ этого метода над nvidia-smi является то, что он отобразит вилки процессов, а также основные процессы, которые используют графический процессор.

Однако одним из недостатков является ограничение процессов, принадлежащих пользователю, который выполняет команду. Чтобы открыть его для всех процессов, принадлежащих любому пользователю, я добавляю sudo до lsof.

Наконец, я объединяю его с watch для получения непрерывного обновления. Итак, в конце концов, это выглядит так:

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

Который имеет выход как:

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

Ответ 7

Просто используйте watch nvidia-smi, он выведет сообщение с интервалом 2 с по умолчанию.

Например, как изображение ниже:

enter image description here

Вы также можете использовать watch -n 5 nvidia-smi smi (-n 5 с интервалом 5 с).

Ответ 8

Это может быть не изящно, но вы можете попробовать

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

Я также пробовал метод by @Edric, который работает, но я предпочитаю оригинальный макет nvidia-smi.

Ответ 9

Вы можете попробовать nvtop, который похож на широко используемый инструмент htop, но для графических процессоров NVIDIA. Вот скриншот nvtop этого в действии.

Screenshot of nvtop in action

Ответ 10

Существует Prometheus GPU Metrics Exporter (PGME), который использует двоичный файл nvidai-smi. Вы можете попробовать это. Когда экспортер запущен, вы можете получить к нему доступ через http://localhost: 9101/metrics. Результат для двух графических процессоров выглядит следующим образом:

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

Ответ 11

вы можете использовать nvidia-smi pmon -i 0 для мониторинга каждого процесса в GPU 0. включая режим вычислений, использование sm, использование памяти, использование кодировщика, использование декодера.

Ответ 12

Вы можете использовать программу мониторинга взглядов с помощью плагина для мониторинга GPU:

  • Открытый исходный код
  • установить: sudo apt-get install -y python-pip; sudo pip install glances[gpu] sudo apt-get install -y python-pip; sudo pip install glances[gpu]
  • запустить: sudo glances

enter image description here

Он также контролирует процессор, дисковый ввод-вывод, дисковое пространство, сеть и некоторые другие вещи:

enter image description here

Ответ 13

Я создал пакетный файл со следующим кодом на машине Windows, чтобы отслеживать каждую секунду. Меня устраивает.

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

nvidia-smi exe обычно находится в "C:\Program Files\NVIDIA Corporation", если вы хотите выполнить команду только один раз.