Wie bekomme ich die NVIDIA-Treiberversion von der Kommandozeile?

97

Zum Debuggen von CUDA-Code und zum Überprüfen der Kompatibilität muss ich herausfinden, welche NVIDIA-Treiberversion für die GPU ich installiert habe. Ich fand Wie bekomme ich die Cuda-Version? aber das hilft mir hier nicht.

Framester
quelle

Antworten:

140

Die Verwendung nvidia-smisollte Ihnen Folgendes sagen:

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
quelle
2
In meinem Centos 6.4-System wird der Fehler "-bash: nvidia-smi: Befehl nicht gefunden" angezeigt. Was könnte das Problem sein?
Shyamkkhadka
@Shyamkkhadka Wahrscheinlich stimmt etwas mit deinem PFAD nicht. Sie könnten versuchen, nvidia-smiso zu finden :locate nvidia-smi
Brendan Wood
@BrendanWood, mit dem Befehl find wird eine leere Ausgabe angezeigt. Ich vermute, wenn es auch keine GPU-Hardware hat. Weil es HPC ist. Und ich greife mit ssh von der Fernbedienung darauf zu.
Shyamkkhadka
@Shyamkkhadka Ja, das ist es wahrscheinlich. HPC verfügt im Allgemeinen nicht über GPUs, es sei denn, es handelt sich um einen GPU-Cluster. Sie können die verfügbare Hardware mit überprüfen lspci. Zum Beispiel: stackoverflow.com/questions/10310250/…
Brendan Wood
@BrendanWood, Wie in Ihrem Link vorgeschlagen, als ich "lspci | grep VGA" gemacht habe. Die Ausgabe wird als "lspci | grep VGA 01: 03.0 VGA-kompatibler Controller: Advanced Micro Devices, Inc. [AMD / ATI] ES1000 (Version 02)" angezeigt. Ich denke, es hat GPU-Hardware.
Shyamkkhadka
101

Auf jedem Linux-System, auf dem der NVIDIA-Treiber installiert und in den Kernel geladen ist, können Sie Folgendes ausführen:

cat /proc/driver/nvidia/version

So rufen Sie die Version des aktuell geladenen NVIDIA-Kernelmoduls ab:

$ 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) 
Talonmien
quelle
5
Oder wenn Sie Bumblebee installiert haben (aufgrund der Dual-GPU von NVIDIA Optimus), führen Sie stattdessen Folgendes aus: "optirun cat / proc / driver / nvidia / version"
Shervin Emami
5
Dies ist besonders nützlich, wenn die Ausgabe von nvidia-smiist:Failed to initialize NVML: GPU access blocked by the operating system
DarioP
1
In meinem Centos 6.4-System habe ich kein Verzeichnis nvidia in / proc / driver. Was könnte das Problem sein? Aus diesem Grund kann ich meine NVIDIA-Treiberversion nicht sehen.
Shyamkkhadka
Auch nützlich, wenn Sie die Ausgabe Failed to initialize NVML: Driver/library version mismatchvon erhalten nvidia-smi.
Sethos II
14

modinfo macht den Trick.

root@nyx:/usr/src# modinfo nvidia|grep version:
version:        331.113
Michael
quelle
3
Auf meinem System wurde das Modul nvidia_XXXentsprechend der von mir installierten Haupttreiberserie benannt. Da modinfokeine Platzhalter oder Teilnamenübereinstimmungen unterstützt werden, musste ich dies tun modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:, um die richtige Haupt- und Neben-Treiberversion zurückzugeben.
Dragon788
1
Unter Ubuntu 18.04 verfügt meine Version von modinfoüber eine --fieldBefehlszeilenoption. So können Sie den grep überspringen : modinfo nvidia --field version. Auch in Ubuntu 16.04 scheint dies nicht zu funktionieren. Ich bekomme immer ERROR: Module nvidia not found.
Cheshirekow
11

Windows-Version:

cd \ Programme \ NVIDIA Corporation \ NVSMI

nvidia-smi

ccc
quelle
7

[HINWEIS: Ich lösche meine Antwort nicht absichtlich, damit die Leute sehen, wie sie es nicht tun sollen]

Wenn du benutzt:

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

Sie erhalten die Version des nVIDIA-Treiberpakets über den Verpackungsmechanismus Ihrer Distribution installiert. Dies ist jedoch möglicherweise nicht die Version, die derzeit tatsächlich als Teil Ihres Kernels ausgeführt wird.

Framester
quelle
11
Das sagt Ihnen nicht, welche Version des Treibers tatsächlich vom Kernel installiert und verwendet wird. Verwenden Sie das proc-Dateisystem, um dies zu sehen. Auch dies funktioniert nur in Distributionen im Debian-Stil.
Talonmies
2
@Framester danke, dass Sie dies aufgegeben haben - das ist das erste, was ich getan hätte (und es ist falsch!)
Stephen
@Framester: Du hast das System total gespielt! Ich habe dir gerade eine weitere +1 für eine nützliche falsche Antwort gegeben ... du schlauer Teufel :-)
einpoklum
4

Um die Antwort von ccc zu erweitern, wenn Sie die Abfrage der Karte mit einem Skript integrieren möchten, finden Sie hier auf der Nvidia-Website Informationen dazu:

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

Außerdem habe ich diesen Thread gefunden, der Powershell erforscht. Hier ist ein Beispielbefehl, mit dem das Dienstprogramm ausgeführt wird, um den tatsächlichen Speicher auf der GPU abzurufen und Ihnen den Einstieg zu erleichtern.

# 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
quelle
Dies beantwortet die Frage nach der
Treiberversion
1
@JRUtily, danke für den Fang. Ich habe den Code aktualisiert, um zu zeigen, wie man die Treiberversion erhält. Prost!
Jeff Blumenthal
0

Wenn Sie dies in einem Programm mit Python auf einem Linux-System benötigen, um reproduzierbar zu sein:

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

gibt:

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
quelle