¿Cómo obtener la versión del controlador nvidia desde la línea de comandos?

Respuestas:

140

El uso nvidia-smidebería decirle 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                                                 |
+-----------------------------------------------------------------------------+
Madera de Brendan
fuente
2
En mi sistema centos 6.4, me da un error como "-bash: nvidia-smi: comando no encontrado". Cuál podría ser el problema ?
Shyamkkhadka
@Shyamkkhadka Es probable que haya algún problema con tu RUTA. Podrías intentar encontrarlo nvidia-smiasí:locate nvidia-smi
Brendan Wood
@BrendanWood, con el comando de localización muestra una salida en blanco. Sospecho que tampoco tiene hardware gpu. Porque es HPC. Y lo estoy accediendo de forma remota, con ssh.
Shyamkkhadka
@Shyamkkhadka Sí, probablemente sea eso. HPC generalmente no tiene GPU a menos que se suponga que sea un clúster de GPU. Puede comprobar el hardware disponible con lspci. Por ejemplo: stackoverflow.com/questions/10310250/…
Brendan Wood
@BrendanWood, como se sugiere en su enlace, cuando hice "lspci | grep VGA". Muestra la salida como "lspci | grep VGA 01: 03.0 Controlador compatible con VGA: Advanced Micro Devices, Inc. [AMD / ATI] ES1000 (rev 02)". Entonces creo que tiene hardware GPU.
Shyamkkhadka
101

En cualquier sistema Linux con el controlador NVIDIA instalado y cargado en el kernel, puede ejecutar:

cat /proc/driver/nvidia/version

para obtener la versión del módulo del kernel de NVIDIA cargado actualmente, por ejemplo:

$ 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) 
garras
fuente
5
O si tiene Bumblebee instalado (debido a NVIDIA Optimus dual GPU), ejecute esto en su lugar: "optirun cat / proc / driver / nvidia / version"
Shervin Emami
5
Esto es especialmente útil cuando la salida de nvidia-smies:Failed to initialize NVML: GPU access blocked by the operating system
DarioP
1
En mi sistema centos 6.4, no tengo el directorio nvidia dentro de / proc / driver. Cuál podría ser el problema ? Debido a esto, no puedo ver la versión de mi controlador nvidia.
Shyamkkhadka
También es útil cuando obtiene la salida Failed to initialize NVML: Driver/library version mismatchde nvidia-smi.
Sethos II
14

modinfo Hace el truco.

root@nyx:/usr/src# modinfo nvidia|grep version:
version:        331.113
Miguel
fuente
3
En mi sistema, el nombre del módulo nvidia_XXXcorresponde a la serie de controladores principal que había instalado, y dado modinfoque no admite comodines o coincidencias de nombres parciales, tuve que hacer esto, modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:que devuelve la versión correcta del controlador principal y secundario.
dragon788
1
En ubuntu 18.04 mi versión de modinfotiene una --fieldopción de línea de comando. Así se puede omitir el grep: modinfo nvidia --field version. Además, en ubuntu 16.04 esto no parece funcionar. Siempre lo consigo ERROR: Module nvidia not found.
Cheshirekow
11

Versión de Windows:

cd \ Archivos de programa \ NVIDIA Corporation \ NVSMI

nvidia-smi

ccc
fuente
7

[NOTA: No eliminaré mi respuesta a propósito, para que la gente vea cómo no hacerlo]

Si utiliza:

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

obtendrá la versión del paquete del controlador nVIDIA instalado a través del mecanismo de empaquetado de su distribución. Pero es posible que esta no sea ​​la versión que se está ejecutando como parte de su kernel en este momento.

Framester
fuente
11
Eso no le dice qué versión del controlador está realmente instalada y en uso por el kernel. Use el sistema de archivos proc para ver que .... Además, esto solo funciona en distribuciones de estilo debian.
talonmies
2
@Framester, gracias por dejar esto, eso es lo primero que habría hecho (¡y está mal!)
Stephen
@Framester: ¡Has engañado totalmente al sistema! Te acabo de dar otro +1 en una útil respuesta incorrecta ... astuto diablo :-)
einpoklum
4

Para ampliar la respuesta de ccc, si desea incorporar la consulta de la tarjeta con un script, aquí hay información en el sitio de Nvidia sobre cómo hacerlo:

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

Además, encontré este hilo investigando powershell. Aquí hay un comando de ejemplo que ejecuta la utilidad para obtener la verdadera memoria disponible en la GPU para que pueda comenzar.

# 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
fuente
esto no responde a la pregunta sobre la versión del controlador mejor que la respuesta aceptada
JR Utily
1
@JRUtily, gracias por la captura. Actualicé el código para mostrar cómo obtener la versión del controlador. ¡Salud!
Jeff Blumenthal
0

Si necesita obtener eso en un programa con Python en un sistema Linux para la reproducibilidad:

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

da:

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) 
Martín Thoma
fuente