จะรับเวอร์ชันไดรเวอร์ nvidia จากบรรทัดคำสั่งได้อย่างไร


97

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

คำตอบ:


141

การใช้nvidia-smiควรบอกคุณว่า:

bwood@mybox:~$ nvidia-smi 
Mon Oct 29 12:30:02 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.  GeForce GTX 580           | 0000:25:00.0  N/A    |       N/A        N/A |
|  54%   70 C  N/A   N/A /  N/A |  25%  383MB / 1535MB |  N/A      Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.           Not Supported                                                 |
+-----------------------------------------------------------------------------+

2
ในระบบ centos 6.4 ของฉันมันทำให้ฉันมีข้อผิดพลาดเป็น "-bash: nvidia-smi: command not found" ปัญหาอาจเกิดจากอะไร?
Shyamkkhadka

@Shyamkkhadka อาจมีบางอย่างผิดปกติกับเส้นทางของคุณ คุณสามารถลองค้นหาสิ่งnvidia-smiนี้:locate nvidia-smi
Brendan Wood

@BrendanWood ด้วยคำสั่ง locate จะแสดงเอาต์พุตเปล่า ฉันสงสัยว่ามันไม่มีฮาร์ดแวร์ของ GPU หรือไม่ เพราะเป็น HPC. และฉันกำลังเข้าถึงจากระยะไกลด้วย ssh
Shyamkkhadka

@Shyamkkhadka ใช่นั่นอาจเป็นไปได้ HPC โดยทั่วไปไม่มี GPU เว้นแต่ว่าควรจะเป็นคลัสเตอร์ GPU lspciคุณสามารถตรวจสอบฮาร์ดแวร์ที่สามารถใช้ได้กับ ตัวอย่างเช่นstackoverflow.com/questions/10310250/…
Brendan Wood

@BrendanWood ตามที่แนะนำในลิงค์ของคุณเมื่อฉันทำ "lspci | grep VGA" จะแสดงเอาต์พุตเป็น "lspci | grep VGA 01: 03.0 คอนโทรลเลอร์ที่รองรับ VGA: Advanced Micro Devices, Inc. [AMD / ATI] ES1000 (rev 02)" ดังนั้นฉันคิดว่ามันมีฮาร์ดแวร์ GPU
Shyamkkhadka

101

บนระบบลินุกซ์ใด ๆ ที่ติดตั้งไดรเวอร์ NVIDIA และโหลดลงในเคอร์เนลคุณสามารถดำเนินการ:

cat /proc/driver/nvidia/version

เพื่อรับเวอร์ชันของโมดูลเคอร์เนล NVIDIA ที่โหลดในปัจจุบันตัวอย่างเช่น:

$ cat /proc/driver/nvidia/version 
NVRM version: NVIDIA UNIX x86_64 Kernel Module  304.54  Sat Sep 29 00:05:49 PDT 2012
GCC version:  gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 

5
หรือถ้าคุณติดตั้ง Bumblebee (เนื่องจาก NVIDIA Optimus dual GPU) ให้เรียกใช้สิ่งนี้แทน: "optirun cat / proc / driver / nvidia / version"
Shervin Emami

5
สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อผลลัพธ์ของnvidia-smiis:Failed to initialize NVML: GPU access blocked by the operating system
DarioP

1
ในระบบ centos 6.4 ของฉันฉันไม่มีไดเร็กทอรี nvidia ใน / proc / driver ปัญหาอาจเกิดจากอะไร? ด้วยเหตุนี้ฉันจึงไม่สามารถดูเวอร์ชันไดรเวอร์ nvidia ของฉันได้
Shyamkkhadka

ยังมีประโยชน์เมื่อคุณได้รับการส่งออกจากFailed to initialize NVML: Driver/library version mismatch nvidia-smi
Sethos II

14

modinfo เคล็ดลับไม่

root@nyx:/usr/src# modinfo nvidia|grep version:
version:        331.113

3
ในระบบของฉันโมดูลได้รับการตั้งชื่อnvidia_XXXให้สอดคล้องกับชุดไดรเวอร์หลักที่ฉันติดตั้งและเนื่องจากmodinfoไม่รองรับสัญลักษณ์แทนหรือชื่อบางส่วนที่ตรงกันฉันจึงต้องทำสิ่งนี้modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:ซึ่งส่งคืนเวอร์ชันไดรเวอร์หลักและเวอร์ชันรองที่ถูกต้อง
dragon788

1
บน ubuntu 18.04 เวอร์ชันของฉันmodinfoมี--fieldตัวเลือกบรรทัดคำสั่ง ดังนั้นคุณสามารถข้าม grep modinfo nvidia --field versionนี้: นอกจากนี้ใน ubuntu 16.04 ดูเหมือนจะใช้งานไม่ได้ ERROR: Module nvidia not foundผมเคยได้รับ
cheshirekow


7

[หมายเหตุ: ฉันไม่ได้ลบคำตอบโดยมีจุดประสงค์เพื่อให้คนอื่นเห็นว่าจะไม่ทำอย่างไร]

หากคุณใช้:

me@over_there:~$  dpkg --status nvidia-current | grep Version | cut -f 1 -d '-' | sed 's/[^.,0-9]//g'
260.19.06

คุณจะได้รับเวอร์ชันของแพ็คเกจไดรเวอร์ nVIDIA ที่ติดตั้งผ่านกลไกการจัดจำหน่ายของคุณ แต่นี่อาจไม่ใช่เวอร์ชันที่ทำงานจริงโดยเป็นส่วนหนึ่งของเคอร์เนลของคุณในขณะนี้


11
นั่นไม่ได้บอกให้คุณทราบว่าเคอร์เนลติดตั้งและใช้งานไดรเวอร์เวอร์ชันใด ใช้ระบบไฟล์ proc เพื่อดูว่า .... นอกจากนี้ยังใช้ได้กับการแจกแจงสไตล์เดเบียนเท่านั้น
เครื่องรางของขลัง

2
@Framester ขอบคุณที่ทิ้งสิ่งนี้ไว้ - นั่นเป็นสิ่งแรกที่ฉันทำ (และมันผิด!)
สตีเฟน

@Framester: คุณเล่นเกมระบบทั้งหมด! ฉันเพิ่งให้ +1 อีกครั้งสำหรับคำตอบที่ผิดที่เป็นประโยชน์ ... คุณปีศาจเจ้าเล่ห์ :-)
einpoklum

4

หากต้องการขยายคำตอบของ ccc หากคุณต้องการรวมการค้นหาการ์ดด้วยสคริปต์นี่คือข้อมูลบนไซต์ Nvidia เกี่ยวกับวิธีการ:

https://nvidia.custhelp.com/app/answers/detail/a_id/3751/~/useful-nvidia-smi-queries

นอกจากนี้ฉันพบว่าหัวข้อนี้กำลังค้นคว้า powershell นี่คือคำสั่งตัวอย่างที่เรียกใช้ยูทิลิตี้เพื่อรับหน่วยความจำที่แท้จริงที่มีอยู่ใน GPU เพื่อเริ่มต้นใช้งาน

# get gpu metrics
$cmd = "& 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi' --query-gpu=name,utilization.memory,driver_version --format=csv"
$gpuinfo = invoke-expression $cmd | ConvertFrom-CSV
$gpuname = $gpuinfo.name
$gpuutil = $gpuinfo.'utilization.memory [%]'.Split(' ')[0]
$gpuDriver = $gpuinfo.driver_version

สิ่งนี้ไม่ตอบคำถามเกี่ยวกับเวอร์ชันไดรเวอร์ที่ดีกว่าคำตอบที่ยอมรับ
JR Utily

1
@JRUtily ขอบคุณสำหรับการจับ ฉันอัปเดตรหัสเพื่อแสดงวิธีรับเวอร์ชันไดรเวอร์ ไชโย!
Jeff Blumenthal

0

หากคุณต้องการรับสิ่งนั้นในโปรแกรมที่มี Python บนระบบ Linux สำหรับการทำซ้ำ:

with open('/proc/driver/nvidia/version') as f:
    version = f.read().strip()
print(version)

ให้:

NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.90  Tue Sep 19 19:17:35 PDT 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.