ฉันติดตั้งชุดเครื่องมือ CUDA บนคอมพิวเตอร์ของฉันและเริ่มโครงการ BOINC บน GPU ใน BOINC ฉันเห็นว่ามันทำงานบน GPU แต่มีเครื่องมือที่สามารถแสดงรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ทำงานบน GPU - การใช้งาน GPU และการใช้หน่วยความจำหรือไม่
ฉันติดตั้งชุดเครื่องมือ CUDA บนคอมพิวเตอร์ของฉันและเริ่มโครงการ BOINC บน GPU ใน BOINC ฉันเห็นว่ามันทำงานบน GPU แต่มีเครื่องมือที่สามารถแสดงรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ทำงานบน GPU - การใช้งาน GPU และการใช้หน่วยความจำหรือไม่
คำตอบ:
สำหรับ Nvidia GPU มีเครื่องมือnvidia-smi
ที่สามารถแสดงการใช้หน่วยความจำการใช้ GPU และอุณหภูมิของ GPU นอกจากนี้ยังมีรายการของกระบวนการคำนวณและตัวเลือกเพิ่มเติมอีกสองสามตัว แต่การ์ดกราฟิกของฉัน (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 GPU ที่นั่นมีอยู่intel-gpu-tools
จาก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
แทน (นี่คือสิ่งที่ mat kelcey ใช้ในสคริปต์ 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 นี้เป็นเครื่องมือที่ฉันเขียนเอง ตรวจสอบและให้ภาพรวมของอุณหภูมิ GPU รวมถึงการใช้งานคอร์ / VRAM / PCI-E และหน่วยความจำบัส มันไม่ได้ตรวจสอบสิ่งที่ทำงานบน GPU แม้ว่า
nvidia-settings
ต้องใช้งาน X11 ซึ่งไม่ได้เป็นแบบนั้นเสมอไป
เพื่อความสมบูรณ์ AMD มีสองตัวเลือก:
ฉันมีการ์ดแสดงผล 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 - คำถามที่พบบ่อยอธิบาย:
เพื่อให้ atMonitor เข้ากันได้กับ MacOS 10.8 เราได้ลบคุณสมบัติที่เกี่ยวข้องกับ GPU ทั้งหมด
ฉันทดลองกับ 2.7b หรือ 2.7.1 ใน Mountain Lion ด้วย MacBookPro5,2 กับ NVIDIA GeForce 9600M GT แอพพลิเคชั่นนั้นใช้เวลาสองสามวินาทีก่อนที่จะเลิกมันแสดงอุณหภูมิ แต่ไม่ใช่การใช้งาน:
ฉันมีกระบวนการยุติ (อาจจะถูกฆ่าตายหรือชน) และยังคงใช้ทรัพยากร nvidia-smi
แต่ไม่ได้ระบุไว้ใน กระบวนการเหล่านี้มักจะใช้หน่วยความจำ gpu
หากคุณคิดว่าคุณมีกระบวนการที่ใช้ทรัพยากรใน GPU และไม่ได้แสดงอยู่nvidia-smi
คุณสามารถลองใช้คำสั่งนี้เพื่อตรวจสอบอีกครั้ง มันจะแสดงให้คุณเห็นว่ากระบวนการใดกำลังใช้ GPU ของคุณ
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 i ใช้สคริปต์ 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 GPUs ลิงก์: https://github.com/Syllo/nvtop
ฟังก์ชั่นต่อไปนี้จะผนวกข้อมูลเช่น PID ชื่อผู้ใช้การใช้งาน CPU การใช้หน่วยความจำการใช้หน่วยความจำ GPU ข้อโต้แย้งของโปรแกรมและระยะเวลาดำเนินการของกระบวนการที่ทำงานบน GPU ไปยังผลลัพธ์ของ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-terminal ด้วยโปรแกรมหน้าต่าง 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
#
ใบอนุญาต: 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