La versión del controlador Nvidia NVML/biblioteca no coincide [cerrado]

Resuelto etal asked hace 7 años • 19 respuestas

Cuando ejecuto nvidia-smi, aparece el siguiente mensaje:

No se pudo inicializar NVML: la versión del controlador/biblioteca no coincide

Hace una hora recibí el mismo mensaje y desinstalé mi biblioteca CUDA y pude ejecutarla nvidia-smi, obteniendo el siguiente resultado:

nvidia-smi-resultado

Después de esto descargué cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debde la página oficial de NVIDIA y luego simplemente:

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

Ahora tengo CUDA instalado, pero aparece el error de discrepancia mencionado.


Alguna información potencialmente útil:

Corriendo cat /proc/driver/nvidia/versionobtengo:

NVRM version: NVIDIA UNIX x86_64 Kernel Module  378.13  Tue Feb  7 20:10:06 PST 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

Estoy ejecutando Ubuntu 16.04.2 LTS (Xenial Xerus).

La versión del kernel es 4.4.0-66-genérica.

etal avatar Mar 26 '17 05:03 etal
Aceptado

Sorpresa sorpresa, reiniciar resolvió el problema (pensé que ya lo había probado).

La solución que Robert Crovella mencionó en los comentarios también puede ser útil para otra persona, ya que es bastante similar a lo que hice para resolver el problema la primera vez que la tuve.

etal avatar Mar 25 '2017 23:03 etal

Como dijo etal , reiniciar puede resolver este problema, pero creo que un procedimiento sin reiniciar ayudará.

Para chino, consulte mi blog ->中文版

El mensaje de error

NVML: la versión del controlador/biblioteca no coincide

Díganos que el módulo del núcleo del controlador Nvidia (kmod) tiene una versión incorrecta, por lo que debemos descargar este controlador y luego cargar la versión correcta de kmod.

¿Cómo podemos hacer eso?

Primero, debemos saber qué controladores están cargados.

lsmod | grep nvidia

usted puede conseguir

nvidia_uvm            634880  8
nvidia_drm             53248  0
nvidia_modeset        790528  1 nvidia_drm
nvidia              12312576  86 nvidia_modeset,nvidia_uvm

Nuestro objetivo final es descargar nvidiael mod, por lo que debemos descargar el módulo dependiendo de nvidia:

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

Luego, descarganvidia

sudo rmmod nvidia

Solución de problemas

Si recibe un error como rmmod: ERROR: Module nvidia is in use, que indica que el módulo del kernel está en uso, debe finalizar el proceso que usa kmod:

sudo lsof /dev/nvidia*

y luego finalice esos procesos, luego continúe descargando los kmods.

Prueba

Confirma que descargaste exitosamente esos kmods

lsmod | grep nvidia

No deberías conseguir nada. Luego confirme que puede cargar el controlador correcto:

nvidia-smi

Debería obtener el resultado correcto.

Comzyh avatar Jul 26 '2017 06:07 Comzyh

¿Por qué ocurre la discrepancia en la versión y cómo podemos evitar que vuelva a suceder?

Es posible que descubra que versionsson diferentes en estas ubicaciones:

  1. dpkg -l | grep nvidia(mira la nvidia-utils-xxxversión del paquete). Esta versión se informa NVMLy se muestra ejecutando nvidia-smi.
  2. cat /proc/driver/nvidia/version(Mire la versión del módulo Kernel, 535.146por ejemplo). Esta versión se lee directamente desde el procsistema de archivos, poblado por el controlador NVIDIA.

El reinicio debería funcionar, pero es posible que desee prohibir la actualización automática de este paquete modificando /etc/apt/sources.list.d/archivos. En mi experiencia, la mejor manera es simplemente retener los paquetes para evitar que se actualicen automáticamente ejecutando los siguientes comandos

sudo apt-mark hold nvidia-dkms-version_number
sudo apt-mark hold nvidia-driver-version_number
sudo apt-mark hold nvidia-utils-version_number

El version_numberaquí, por ejemplo, es 535. Reemplácelo con la versión que desee.

PD: parte del contenido se inspiró en esto (las instrucciones originales estaban en chino, por lo que hice referencia a la versión traducida)

Long avatar Apr 15 '2021 08:04 Long

Estaba teniendo este problema y ninguno de los otros remedios funcionó. El mensaje de error era opaco, pero la clave era verificar la salida de dmesg :

[   10.118255] NVRM: API mismatch: the client has the version 410.79, but
           NVRM: this kernel module has the version 384.130.  Please
           NVRM: make sure that this kernel module and all NVIDIA driver
           NVRM: components have the same version.

Sin embargo, eliminé por completo la versión 384 y eliminé los controladores del kernel restantes nvidia-384*. Pero incluso después de reiniciar, seguía recibiendo esto. Ver esto significaba que el kernel todavía estaba compilado con la referencia 384, pero solo encontraba 410. Así que volví a compilar mi kernel:

uname -a # Find the kernel it's using

Linux blah 4.13.0-43-generic #48~16.04.1-Ubuntu SMP Thu May 17 12:56:46 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


update-initramfs -c -k 4.13.0-43-generic # Recompile it
reboot

Y luego funcionó.

Después de eliminar 384, todavía tenía 384 archivos en: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/ núcleo/controladores

Recomiendo usar el locatecomando (no instalado de forma predeterminada) en lugar de buscar en el sistema de archivos cada vez.

user9170 avatar Jan 24 '2019 15:01 user9170

Las 2 respuestas principales no pueden resolver mi problema. Encontré una solución en el foro oficial de Nvidia que resolvió mi problema.

La siguiente información de error puede deberse a la instalación de dos versiones diferentes del controlador mediante enfoques diferentes. Por ejemplo, instale el controlador Nvidia de APT y el instalador oficial.

No se pudo inicializar NVML: la versión del controlador/biblioteca no coincide

Para solucionar este problema, sólo es necesario ejecutar uno de los siguientes dos comandos.

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall
HZ-VUW avatar Jul 17 '2019 14:07 HZ-VUW