Я установил инструментарий CUDA на свой компьютер и запустил проект BOINC на GPU. В BOINC я вижу, что он работает на GPU, но есть ли инструмент, который может показать мне больше подробностей о том, что работает на GPU - использование GPU и памяти?
Я установил инструментарий CUDA на свой компьютер и запустил проект BOINC на GPU. В BOINC я вижу, что он работает на GPU, но есть ли инструмент, который может показать мне больше подробностей о том, что работает на GPU - использование GPU и памяти?
Ответы:
Для графических процессоров Nvidia есть инструмент, nvidia-smi
который может отображать использование памяти, использование графического процессора и температуру графического процессора. Также есть список вычислительных процессов и еще несколько опций, но моя графическая карта (GeForce 9600 GT) поддерживается не полностью.
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 |
+-----------------------------------------------------------------------------+
watch -n 0.5 nvidia-smi
, будет обновлять вывод, не заполняя вывод терминала.
watch -d -n 0.5 nvidia-smi
будет еще лучше.
-d
флаг
man watch
говорит нам, что -d
флаг выделяет различия между выходными данными , поэтому он может помочь выделить те метрики, которые меняются со временем.
Для Linux использование nvidia-smi -l 1
постоянно будет давать вам информацию об использовании GPU, с интервалом обновления 1 секунды.
watch -n 1 nvidia-smi
для получения постоянных обновлений без заполнения терминала выводом
Недавно я написал простую утилиту командной строки под названием gpustat
(которая является оберткой nvidia-smi
): пожалуйста, взгляните на https://github.com/wookayin/gpustat .
Для графических процессоров Intel существует проект intel-gpu-tools
from http://intellinuxgraphics.org/ , в котором приводится команда intel_gpu_top
(помимо прочего). Это похоже на top
и htop
, но специально для Intel GPU.
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%:
nvidia-smi
не работает на некоторых машинах Linux (возвращает N / A для многих свойств). Вы можете использовать nvidia-settings
вместо этого (это также, что мат Келси использовал в своем скрипте Python).
nvidia-settings -q GPUUtilization -q useddedicatedgpumemory
Вы также можете использовать:
watch -n0.1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"
для постоянного мониторинга.
nvidia-settings -q all
чтобы увидеть, какие другие параметры вы можете контролировать. Я отслеживаю GPUCurrentProcessorClockFreqs
и GPUCurrentClockFreqs
.
nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
Для Linux я использую этот HTOP-подобный инструмент, который я написал сам. Он отслеживает и дает представление о температуре графического процессора, а также об использовании ядра / VRAM / PCI-E и шины памяти. Это не контролирует то, что работает на GPU, хотя.
nvidia-settings
требуется работающий X11, что не всегда так.
Для полноты у AMD есть два варианта:
fglrx (драйверы с закрытым исходным кодом).
$ aticonfig --odgc --odgt
mesa (драйверы с открытым исходным кодом), вы можете использовать RadeonTop .
Просматривайте использование своего графического процессора, как для общего процента активности, так и для отдельных блоков.
У меня есть видеокарта GeForce 1060 GTX, и я обнаружил, что следующая команда дает мне информацию об использовании карты, температуре, скорости вентилятора и энергопотреблении:
$ nvidia-smi --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu
Вы можете увидеть список всех вариантов запроса с:
$ nvidia-smi --help-query-gpu
memory.used
или ( memory.free
).
Последняя версия atMonitor для поддержки функций, связанных с GPU, - atMonitor 2.7.1.
- а ссылка на 2.7.1 доставляет 2.7b.
Для более новой версии приложения atMonitor - FAQ объясняет:
Чтобы сделать AtMonitor совместимым с MacOS 10.8, мы удалили все функции, связанные с GPU.
Я экспериментировал с 2.7b или 2.7.1 на Mountain Lion с MacBookPro5,2 с NVIDIA GeForce 9600M GT. Приложение работало за несколько секунд до выхода, показывало температуру, но не использовалось:
У меня были процессы прекращения (возможно, сбиты или сбой) и продолжают использовать ресурсы, но не были перечислены в nvidia-smi
. Обычно эти процессы просто занимают память GPU.
Если вы считаете, что у вас есть процесс, использующий ресурсы в графическом процессоре, и он не отображается в nvidia-smi
, вы можете попробовать выполнить эту команду для двойной проверки. Он покажет вам, какие процессы используют ваши графические процессоры.
sudo fuser -v /dev/nvidia*
Это работает на EL7, Ubuntu или других дистрибутивах, и их устройства nvidia могут быть перечислены под другим именем / местоположением.
У Glances есть плагин, который показывает использование GPU и использование памяти.
http://glances.readthedocs.io/en/stable/aoa/gpu.html
Использует библиотеку nvidia-ml-py3: https://pypi.python.org/pypi/nvidia-ml-py3
для nvidia на linux я использую следующий скрипт на python, который использует необязательную задержку и повторяется как iostat и 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}
Вы можете использовать nvtop
, это похоже на, htop
но для графических процессоров NVIDIA. Ссылка: https://github.com/Syllo/nvtop
Следующая функция добавляет такую информацию, как PID, имя пользователя, использование процессора, использование памяти, использование памяти графическим процессором, программные аргументы и время выполнения процессов, которые выполняются на графическом процессоре, к выводу 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
}
Пример вывода:
$ 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
Этот скрипт более читабелен и предназначен для простых модов и расширений.
Вы можете заменить gnome-терминал своей любимой программой оконного окна.
#! /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
#
Лицензия: GNU GPLv2, TranSeed Research
Вы можете использовать
nvidia-smi pmon -i 0
контролировать каждый процесс в GPU 0. включая вычислительный / графический режим, использование sm, использование памяти, использование кодера, использование декодера.
Я не видел его в доступных ответов ( за исключением , может быть , в комментарии), так что я хотел бы добавить , что вы можете получить более приятный освежающий nvidia-smi
с watch
. Это обновляет экран при каждом обновлении, а не прокручивает постоянно.
watch -n 1 nvidia-smi
в течение одной секунды обновления. Замените на 1
то, что вы хотите, включая доли секунды:
watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi