การตรวจสอบการใช้ GPU (CUDA)


223

ฉันติดตั้งชุดเครื่องมือ CUDA บนคอมพิวเตอร์ของฉันและเริ่มโครงการ BOINC บน GPU ใน BOINC ฉันเห็นว่ามันทำงานบน GPU แต่มีเครื่องมือที่สามารถแสดงรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ทำงานบน GPU - การใช้งาน GPU และการใช้หน่วยความจำหรือไม่

คำตอบ:


251

สำหรับ 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                                                 |
+-----------------------------------------------------------------------------+

1
ชิป ION ของฉันไม่แสดงการใช้งานเช่นกัน : /
Raphael

123
watch -n 0.5 nvidia-smiจะทำการอัพเดทเอาท์พุทโดยไม่ต้องเติมเทอร์มินัลของคุณ
บาร์

31
@Bar เคล็ดลับดี watch -d -n 0.5 nvidia-smiจะดียิ่งขึ้น
zeekvfu

3
@zeekvfu ฉันคิดว่ามันจะดีกว่าที่จะอธิบายว่า-dธงทำอะไรได้บ้าง
donlucacorleone

5
@donlucacorleone man watchบอกเราว่า-dไฮไลต์ความแตกต่างระหว่างการตั้งค่าสถานะเอาท์พุทดังนั้นจึงสามารถช่วยในการเน้นตัวชี้วัดที่มีการเปลี่ยนแปลงตลอดเวลา
David Kaczynski

71

สำหรับ linux การใช้nvidia-smi -l 1จะให้ข้อมูลการใช้งาน gpu อย่างต่อเนื่องโดยมีช่วงเวลารีเฟรช 1 วินาที


74
ฉันชอบที่จะใช้watch -n 1 nvidia-smiเพื่อรับการปรับปรุงอย่างต่อเนื่องโดยไม่ต้องกรอกข้อมูลเทอร์มินัล
ali_m

1
การใช้นาฬิกาหมายถึงการเริ่มต้นกระบวนการใหม่ทุก ๆ วินาทีเพื่อสำรวจความคิดเห็นของการ์ด ดีกว่าที่จะทำ -l และไม่ใช่ทุก ๆ วินาทีฉันขอแนะนำทุกนาทีหรือทุก ๆ 5 นาที
มิกกี้

63

เมื่อเร็ว ๆ นี้ผมได้เขียนอรรถประโยชน์บรรทัดคำสั่งที่เรียบง่ายที่เรียกว่าgpustat(ซึ่งเป็นเสื้อคลุมของnvidia-smi): โปรดดูที่https://github.com/wookayin/gpustat


55

สำหรับ 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%:                      

35

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"

สำหรับการตรวจสอบอย่างต่อเนื่อง


4
ดีใจที่นี่ไม่ใช่ความคิดเห็น มันคือสิ่งที่ฉันกำลังค้นหาเมื่อฉันเจอคำถามนี้
คะแนน _ ต่ำ

ขอบคุณนี่คือสิ่งที่ใช้ได้ผลสำหรับฉันเนื่องจากฉันมีการ์ด GeForce ซึ่งไม่รองรับโดย nvidia-smi
alexg

4
คุณสามารถทำได้nvidia-settings -q allเพื่อดูพารามิเตอร์อื่น ๆ ที่คุณสามารถตรวจสอบได้ ผมตรวจสอบและGPUCurrentProcessorClockFreqs GPUCurrentClockFreqs
alexg

1
ขอบคุณผู้ชายความคิดที่ดีในการค้นหาทั้งหมดเนื่องจากการ์ดแต่ละใบอาจมีสตริงการตรวจสอบที่แตกต่างกัน
ruoho ruotsi

หากคุณต้องการตัวเลขและไม่มีอะไรอื่น (เช่นเพื่อความสะดวก) ให้ใช้สิ่งนี้:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk

16

สำหรับ Linux ฉันใช้ HTOP นี้เป็นเครื่องมือที่ฉันเขียนเอง ตรวจสอบและให้ภาพรวมของอุณหภูมิ GPU รวมถึงการใช้งานคอร์ / VRAM / PCI-E และหน่วยความจำบัส มันไม่ได้ตรวจสอบสิ่งที่ทำงานบน GPU แม้ว่า

gmonitor

ป้อนคำอธิบายรูปภาพที่นี่


1
nvidia-settingsต้องใช้งาน X11 ซึ่งไม่ได้เป็นแบบนั้นเสมอไป
Victor Sergienko

ทำงานให้ฉันได้โดยไม่ยุ่งยาก!
Hennadii Madan

15

เพื่อความสมบูรณ์ AMD มีสองตัวเลือก:

  1. fglrx (ไดรเวอร์แหล่งข้อมูลปิด)

    $ aticonfig --odgc --odgt
    
  2. เมซ่า (คนขับรถเปิดแหล่งที่มา) คุณสามารถใช้RadeonTop

    ดูการใช้ GPU ของคุณทั้งเปอร์เซ็นต์กิจกรรมทั้งหมดและบล็อกแต่ละบล็อก


13

ฉันมีการ์ดแสดงผล GeForce 1060 GTX และฉันพบว่าคำสั่งต่อไปนี้ให้ข้อมูลเกี่ยวกับการใช้การ์ดอุณหภูมิความเร็วพัดลมและการใช้พลังงาน:

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

คุณสามารถดูรายการตัวเลือกการสืบค้นทั้งหมดได้ด้วย:

$ nvidia-smi --help-query-gpu

1
มันจะเป็นการเพิ่มมูลค่าmemory.usedหรือ ( memory.free) เช่นกัน
Zoltan

3

สำหรับ OS X

รวมไปถึง Mountain Lion

เมนู iStat

ไม่รวม Mountain Lion

atMonitor

รุ่นล่าสุดของ 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 แอพพลิเคชั่นนั้นใช้เวลาสองสามวินาทีก่อนที่จะเลิกมันแสดงอุณหภูมิ แต่ไม่ใช่การใช้งาน:

                                                  สกรีนช็อตของ atMonitor 2.7b บน Mountain Lion


3

ฉันมีกระบวนการยุติ (อาจจะถูกฆ่าตายหรือชน) และยังคงใช้ทรัพยากร nvidia-smiแต่ไม่ได้ระบุไว้ใน กระบวนการเหล่านี้มักจะใช้หน่วยความจำ gpu

หากคุณคิดว่าคุณมีกระบวนการที่ใช้ทรัพยากรใน GPU และไม่ได้แสดงอยู่nvidia-smiคุณสามารถลองใช้คำสั่งนี้เพื่อตรวจสอบอีกครั้ง มันจะแสดงให้คุณเห็นว่ากระบวนการใดกำลังใช้ GPU ของคุณ

sudo fuser -v /dev/nvidia*

สิ่งนี้ใช้ได้กับ EL7, Ubuntu หรือการกระจายอื่น ๆ อาจมีอุปกรณ์ nvidia ของพวกเขาอยู่ในรายชื่อ / สถานที่อื่น



2

สำหรับ 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}


1

ฟังก์ชั่นต่อไปนี้จะผนวกข้อมูลเช่น 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

อย่างระมัดระวังฉันไม่คิดว่า pmem ที่ ps ให้มาคำนึงถึงหน่วยความจำทั้งหมดของ GPU แต่ของ CPU เพราะ ps ไม่ใช่ "Nvidia GPU" ที่ทราบ
SebMa

0

สคริปต์นี้สามารถอ่านได้มากขึ้นและได้รับการออกแบบมาเพื่อการดัดแปลงและส่วนขยายที่ง่าย

คุณสามารถแทนที่ 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


0

คุณสามารถใช้ได้

nvidia-smi pmon -i 0

เพื่อตรวจสอบทุกขั้นตอนใน GPU 0 รวมถึงโหมดคำนวณ / กราฟิก, การใช้งาน sm, การใช้หน่วยความจำ, การใช้งานตัวเข้ารหัส, การใช้ตัวถอดรหัส


0

ผมไม่ได้เห็นมันในคำตอบที่มีอยู่ (อาจจะยกเว้นในความคิดเห็น) ดังนั้นฉันคิดว่าฉันต้องการเพิ่มที่คุณจะได้รับความสดชื่นดีกว่าด้วยnvidia-smi watchสิ่งนี้จะรีเฟรชหน้าจอด้วยการอัพเดตแต่ละครั้งแทนที่จะเลื่อนอย่างต่อเนื่อง

watch -n 1 nvidia-smi

สำหรับการอัพเดตช่วงเวลาหนึ่งวินาที แทนที่1ด้วยสิ่งที่คุณต้องการรวมถึงเศษส่วนวินาที:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.