Bagaimana cara mendapatkan versi driver nvidia dari baris perintah?

97

Untuk men-debug kode CUDA dan memeriksa kompatibilitas, saya perlu mencari tahu versi driver nvidia untuk GPU yang telah saya instal. Saya menemukan Bagaimana cara mendapatkan versi cuda? tapi itu tidak membantu saya di sini.

Framester
sumber

Jawaban:

140

Menggunakan nvidia-smiseharusnya memberi tahu Anda bahwa:

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                                                 |
+-----------------------------------------------------------------------------+
Kayu Brendan
sumber
2
Di sistem centos 6.4 saya, ini memberi saya kesalahan sebagai "-bash: nvidia-smi: perintah tidak ditemukan". Apa masalahnya?
Shyamkkhadka
@Shyamkkhadka Mungkin ada yang salah dengan PATH Anda. Anda dapat mencoba menemukan nvidia-smiseperti ini:locate nvidia-smi
Brendan Wood
@BrendanWood, dengan perintah temukan itu menunjukkan keluaran kosong. Saya menduga jika itu tidak memiliki perangkat keras GPU juga. Karena itu HPC. Dan saya mengaksesnya dari jarak jauh, dengan ssh.
Shyamkkhadka
@Shyamkkhadka Ya, mungkin itu. HPC umumnya tidak memiliki GPU kecuali mereka seharusnya merupakan cluster GPU. Anda dapat memeriksa perangkat keras yang tersedia dengan lspci. Misalnya: stackoverflow.com/questions/10310250/…
Brendan Wood
@BrendanWood, Seperti yang disarankan di tautan Anda, ketika saya melakukan "lspci | grep VGA". Ini menunjukkan keluaran sebagai "lspci | grep VGA 01: 03.0 Pengontrol yang kompatibel dengan VGA: Advanced Micro Devices, Inc. [AMD / ATI] ES1000 (rev 02)". Jadi saya pikir ini memiliki perangkat keras GPU.
Shyamkkhadka
101

Di sistem linux mana pun dengan driver NVIDIA yang diinstal dan dimuat ke kernel, Anda dapat menjalankan:

cat /proc/driver/nvidia/version

untuk mendapatkan versi modul kernel NVIDIA yang dimuat saat ini, misalnya:

$ 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) 
cakar
sumber
5
Atau jika Anda menginstal Bumblebee (karena NVIDIA Optimus dual GPU), jalankan ini sebagai gantinya: "optirun cat / proc / driver / nvidia / version"
Shervin Emami
5
Ini sangat berguna ketika keluarannya nvidia-smiadalah:Failed to initialize NVML: GPU access blocked by the operating system
DarioP
1
Di sistem centos 6.4 saya, saya tidak memiliki direktori nvidia di dalam / proc / driver. Apa masalahnya? Karena ini, saya tidak dapat melihat versi driver nvidia saya.
Shyamkkhadka
Juga berguna ketika Anda mendapatkan output Failed to initialize NVML: Driver/library version mismatchdari nvidia-smi.
Sethos II
14

modinfo melakukan triknya.

root@nyx:/usr/src# modinfo nvidia|grep version:
version:        331.113
Michael
sumber
3
Di sistem saya, modul diberi nama nvidia_XXXsesuai dengan seri driver utama yang telah saya instal, dan karena modinfotidak mendukung wildcard atau nama parsial yang cocok, saya harus melakukan ini modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:yang mengembalikan versi driver mayor dan minor yang benar.
dragon788
1
Di ubuntu 18.04 versi saya modinfomemiliki --fieldopsi baris perintah. Sehingga Anda dapat melewati grep: modinfo nvidia --field version. Juga, di ubuntu 16.04 ini sepertinya tidak berfungsi. Saya selalu mendapatkan ERROR: Module nvidia not found.
cheshirekow
11

Versi Windows:

cd \ Program Files \ NVIDIA Corporation \ NVSMI

nvidia-smi

ccc
sumber
7

[CATATAN: Saya tidak menghapus jawaban saya dengan sengaja, jadi orang-orang melihat bagaimana cara untuk tidak melakukannya]

Jika Anda menggunakan:

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

Anda akan mendapatkan versi paket driver nVIDIA yang diinstal melalui mekanisme pengemasan distribusi Anda. Tetapi ini mungkin bukan versi yang sebenarnya berjalan sebagai bagian dari kernel Anda sekarang.

Framester
sumber
11
Itu tidak memberi tahu Anda versi driver apa yang sebenarnya diinstal dan digunakan oleh kernel. Gunakan sistem file proc untuk melihat bahwa .... Ini juga hanya berfungsi di distribusi gaya debian.
cakar
2
@Framester terima kasih telah meninggalkan ini - itu adalah hal pertama yang telah saya lakukan (dan itu salah!)
stephen
@Framester: Anda benar-benar menguasai sistem! Saya baru saja memberi Anda +1 lagi untuk jawaban salah yang berguna ... Anda setan licik :-)
einpoklum
4

Untuk memperluas jawaban ccc, jika Anda ingin memasukkan kueri kartu dengan skrip, berikut adalah informasi di situs Nvidia tentang cara melakukannya:

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

Juga, saya menemukan utas ini meneliti PowerShell. Berikut adalah contoh perintah yang menjalankan utilitas untuk mendapatkan memori sebenarnya yang tersedia di GPU untuk Anda mulai.

# 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
Jeff Blumenthal
sumber
ini tidak menjawab pertanyaan tentang versi driver lebih baik daripada jawaban yang diterima
JR Utily
1
@JRUtily, terima kasih atas tangkapannya. Saya memperbarui kode untuk menunjukkan cara mendapatkan versi driver. Bersulang!
Jeff Blumenthal
0

Jika Anda perlu mendapatkannya di program dengan Python pada sistem Linux untuk reproduktifitas:

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

memberikan:

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) 
Martin Thoma
sumber