Jak uzyskać wersję sterownika nvidia z wiersza poleceń?

97

Aby debugować kod CUDA i sprawdzić kompatybilność, muszę dowiedzieć się, jaka wersja sterownika nvidia dla zainstalowanego GPU. Znalazłem Jak zdobyć wersję CUDA? ale to mi tutaj nie pomaga.

Framester
źródło

Odpowiedzi:

140

Używanie nvidia-smipowinno ci powiedzieć, że:

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                                                 |
+-----------------------------------------------------------------------------+
Brendan Wood
źródło
2
W moim systemie Centos 6.4 wyświetla mi się błąd „-bash: nvidia-smi: polecenie nie zostało znalezione”. Co może być problemem ?
Shyamkkhadka
@Shyamkkhadka Prawdopodobnie coś jest nie tak z Twoją PATH. Możesz spróbować znaleźć coś nvidia-smitakiego:locate nvidia-smi
Brendan Wood
@BrendanWood, z poleceniem locate pokazuje puste wyjście. Podejrzewam, że nie ma też sprzętu GPU. Ponieważ to jest HPC. I uzyskuję do niego dostęp zdalnie za pomocą ssh.
Shyamkkhadka
@Shyamkkhadka Tak, to prawdopodobnie to. HPC generalnie nie ma procesorów GPU, chyba że mają być klastrem GPU. Możesz sprawdzić dostępny sprzęt za pomocą lspci. Na przykład: stackoverflow.com/questions/10310250/…
Brendan Wood
@BrendanWood, Jak zasugerował twój link, kiedy zrobiłem "lspci | grep VGA". Wyświetla dane wyjściowe jako „lspci | grep VGA 01: 03.0 Kontroler zgodny z VGA: Advanced Micro Devices, Inc. [AMD / ATI] ES1000 (rev 02)”. Więc myślę, że ma sprzęt GPU.
Shyamkkhadka
101

W każdym systemie Linux ze sterownikiem NVIDIA zainstalowanym i załadowanym do jądra możesz wykonać:

cat /proc/driver/nvidia/version

aby uzyskać wersję aktualnie załadowanego modułu jądra NVIDIA, na przykład:

$ 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) 
talonmies
źródło
5
Lub jeśli masz zainstalowany Bumblebee (ze względu na podwójny GPU NVIDIA Optimus), uruchom to: „optirun cat / proc / driver / nvidia / version”
Shervin Emami
5
Jest to szczególnie przydatne, gdy wyjście nvidia-smito:Failed to initialize NVML: GPU access blocked by the operating system
DarioP
1
W moim systemie Centos 6.4 nie mam katalogu nvidia w / proc / driver. Co może być problemem ? Z tego powodu nie mogę zobaczyć mojej wersji sterownika nvidia.
Shyamkkhadka
Przydatne również, gdy otrzymujesz dane wyjściowe Failed to initialize NVML: Driver/library version mismatchz nvidia-smi.
Sethos II
14

modinfo Zrób sztuczkę.

root@nyx:/usr/src# modinfo nvidia|grep version:
version:        331.113
Michael
źródło
3
W moim systemie moduł został nazwany nvidia_XXXzgodnie z główną serią sterowników, które zainstalowałem, a ponieważ modinfonie obsługuje symboli wieloznacznych ani częściowych dopasowań nazw, musiałem to zrobić, modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:co zwróciło poprawną wersję głównego i pomocniczego sterownika.
dragon788
1
W modinfosystemie Ubuntu 18.04 moja wersja ma --fieldopcję wiersza poleceń. Więc można pominąć grep: modinfo nvidia --field version. Ponadto w Ubuntu 16.04 to nie działa. Zawsze rozumiem ERROR: Module nvidia not found.
cheshirekow
11

Wersja systemu Windows:

cd \ Program Files \ NVIDIA Corporation \ NVSMI

nvidia-smi

ccc
źródło
7

[UWAGA: celowo nie usuwam odpowiedzi, więc ludzie widzą, jak tego nie robić]

Jeśli użyjesz:

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

otrzymasz wersję pakietu sterownika nVIDIA zainstalowaną poprzez mechanizm pakowania Twojej dystrybucji. Ale może to nie być wersja, która aktualnie działa jako część jądra.

Framester
źródło
11
To nie mówi ci, jaka wersja sterownika jest faktycznie zainstalowana i używana przez jądro. Skorzystaj z systemu plików proc, aby to zobaczyć ... Również to działa tylko w dystrybucjach w stylu Debiana.
talonmies
2
@Framester dzięki za zostawienie tego - to pierwsza rzecz, którą bym zrobił (i to jest złe!)
Stephen
@Framester: Całkowicie zagrałeś w system! Właśnie dałem ci kolejne +1 na użyteczną, złą odpowiedź ... ty przebiegły
diabełku
4

Aby rozwinąć odpowiedź ccc, jeśli chcesz włączyć odpytywanie karty za pomocą skryptu, oto informacje na stronie Nvidia, jak to zrobić:

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

Znalazłem też ten wątek, badając PowerShell. Oto przykładowe polecenie, które uruchamia narzędzie, aby uzyskać prawdziwą pamięć dostępną na GPU, aby rozpocząć.

# 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
źródło
to nie daje lepszej odpowiedzi na pytanie o wersję sterownika niż zaakceptowana odpowiedź
JR Utily
1
@JRUtily, dziękuję za połów. Zaktualizowałem kod, aby pokazać, jak uzyskać wersję sterownika. Twoje zdrowie!
Jeff Blumenthal,
0

Jeśli potrzebujesz uzyskać to w programie z Pythonem w systemie Linux, aby uzyskać powtarzalność:

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

daje:

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
źródło