Comment obtenir la version du pilote nvidia à partir de la ligne de commande?

97

Pour déboguer le code CUDA et vérifier les compatibilités, j'ai besoin de savoir quelle version du pilote nvidia pour le GPU que j'ai installé. J'ai trouvé Comment obtenir la version cuda? mais cela ne m'aide pas ici.

Framester
la source

Réponses:

140

L'utilisation nvidia-smidevrait vous dire que:

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                                                 |
+-----------------------------------------------------------------------------+
Bois Brendan
la source
2
Dans mon système centos 6.4, cela me donne une erreur comme "-bash: nvidia-smi: commande non trouvée". Quel pourrait être le problème?
Shyamkkhadka
@Shyamkkhadka Il y a probablement un problème avec votre PATH. Vous pourriez essayer de trouver nvidia-smicomme ceci:locate nvidia-smi
Brendan Wood
@BrendanWood, avec la commande Locate, affiche une sortie vide. Je soupçonne qu'il n'a pas non plus de matériel gpu. Parce que c'est du HPC. Et j'y accède à distance, avec ssh.
Shyamkkhadka
@Shyamkkhadka Oui, c'est probablement ça. HPC n'a généralement pas de GPU à moins qu'ils ne soient censés être un cluster de GPU. Vous pouvez vérifier le matériel disponible avec lspci. Par exemple: stackoverflow.com/questions/10310250/…
Brendan Wood
@BrendanWood, Comme suggéré dans votre lien, quand j'ai fait "lspci | grep VGA". Il affiche la sortie comme "lspci | grep VGA 01: 03.0 Contrôleur compatible VGA: Advanced Micro Devices, Inc. [AMD / ATI] ES1000 (rev 02)". Donc je pense qu'il a du matériel GPU.
Shyamkkhadka
101

Sur n'importe quel système Linux avec le pilote NVIDIA installé et chargé dans le noyau, vous pouvez exécuter:

cat /proc/driver/nvidia/version

pour obtenir la version du module de noyau NVIDIA actuellement chargé, par exemple:

$ 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
la source
5
Ou si Bumblebee est installé (en raison du double GPU NVIDIA Optimus), exécutez-le à la place: "optirun cat / proc / driver / nvidia / version"
Shervin Emami
5
Ceci est particulièrement utile lorsque la sortie de nvidia-smiest:Failed to initialize NVML: GPU access blocked by the operating system
DarioP
1
Dans mon système centos 6.4, je n'ai pas de répertoire nvidia dans / proc / driver. Quel pourrait être le problème? Pour cette raison, je ne peux pas voir la version de mon pilote nvidia.
Shyamkkhadka
Également utile lorsque vous obtenez la sortie à Failed to initialize NVML: Driver/library version mismatchpartir de nvidia-smi.
Sethos II
14

modinfo fait l'affaire.

root@nyx:/usr/src# modinfo nvidia|grep version:
version:        331.113
Michael
la source
3
Sur mon système, le module a été nommé nvidia_XXXcorrespondant à la série de pilotes majeurs que j'avais installés, et comme modinfone prend pas en charge les caractères génériques ou les correspondances de nom partielles, j'ai dû le faire, ce modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:qui renvoie la version correcte des pilotes majeurs et mineurs.
dragon788
1
Sur Ubuntu 18.04, ma version de modinfoa une --fieldoption de ligne de commande. Ainsi , vous pouvez sauter le grep: modinfo nvidia --field version. De plus, dans ubuntu 16.04, cela ne semble pas fonctionner. Je reçois toujours ERROR: Module nvidia not found.
cheshirekow
11

Version Windows:

cd \ Program Files \ NVIDIA Corporation \ NVSMI

nvidia-smi

ccc
la source
7

[REMARQUE: je ne supprime pas ma réponse exprès, donc les gens voient comment ne pas le faire]

Si tu utilises:

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

vous obtiendrez la version du package de pilotes nVIDIA installée via le mécanisme de packaging de votre distribution. Mais ce n'est peut- être pas la version qui fonctionne actuellement dans le cadre de votre noyau.

Framester
la source
11
Cela ne vous dit pas quelle version du pilote est réellement installée et utilisée par le noyau. Utilisez le système de fichiers proc pour voir que ... De plus, cela ne fonctionne que dans les distributions de style Debian.
talonmies
2
@Framester merci d'avoir laissé ça en place - c'est la première chose que j'aurais fait (et c'est mal!)
Stephen
@Framester: Vous avez totalement joué le système! Je viens de vous donner un autre +1 sur une mauvaise réponse utile ... vous diable rusé :-)
einpoklum
4

Pour développer la réponse de ccc, si vous souhaitez intégrer l'interrogation de la carte avec un script, voici des informations sur le site Nvidia sur la façon de procéder:

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

De plus, j'ai trouvé ce fil de recherche sur PowerShell. Voici un exemple de commande qui exécute l'utilitaire pour obtenir la vraie mémoire disponible sur le GPU pour vous aider à démarrer.

# 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
la source
cela ne répond pas à la question sur la version du pilote mieux que la réponse acceptée
JR utily
1
@JRUtily, merci pour la capture. J'ai mis à jour le code pour montrer comment obtenir la version du pilote. À votre santé!
Jeff Blumenthal
0

Si vous devez obtenir cela dans un programme avec Python sur un système Linux pour la reproductibilité:

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

donne:

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
la source