El controlador NVIDIA NVML / la versión de la biblioteca no coinciden

230

Cuando corro nvidia-smime sale el siguiente mensaje:

Failed to initialize NVML: Driver/library version mismatch

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

nvidia-smi-result

Después de esto lo 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 recibo el error de falta de coincidencia mencionado.


Alguna información potencialmente útil:

Corriendo cat /proc/driver/nvidia/versionme sale:

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.

La versión del kernel es: 4.4.0-66-generic.

¡Gracias!

etal
fuente
12
Probablemente haya mezclado una instalación anterior de runfile con su instalación del administrador de paquetes (actual) (apt-get). Siga las instrucciones en la guía de instalación de cuda linux para eliminar todos los controladores anteriores de NVIDIA y archivos CUDA, y luego reinstale después de haberlo limpiado. Antes de comenzar su reinstalación, puede leer el documento completo de la guía de instalación de Linux que vinculé. El conflicto casi seguramente surge de su intento de instalar el paquete CUDA 8 GA2 en la parte superior de su instalación de controlador 378.13 existente.
Robert Crovella
Estoy votando para cerrar esta pregunta, ya que se trata básicamente de instalar (o interrumpir la instalación de) los controladores de GPU y no está directamente relacionada con la programación.
Talonmies

Respuestas:

339

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

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
fuente
2
recuerde regresar dentro de unos días y aceptar esta respuesta para que esta pregunta quede fuera de la lista sin respuesta para la etiqueta CUDA
talonmies
55
Fui escéptico acerca de que esto funcionara después de un reinicio, pero de todos modos lo intenté, ¡¡Y FUNCIONÓ !! ¡Gracias!
Abhishek Potnis
8
@AbhishekPotnis Si se pregunta por qué funcionó el reinicio, puede deberse a esto: al comprobar /var/log/apt/history.logUbuntu, se reveló que el sistema ha actualizado automáticamente libcuda, que presumiblemente requirió un reinicio para continuar funcionando correctamente. Desde entonces he deshabilitado esas actualizaciones con la esperanza de que no las vuelva a ver.
John
1
Lamentablemente, esta no es una solución permanente. El problema podría reaparecer. La solución es instalar una versión más nueva del paquete nvidia ( nvidia-390). Vea mi respuesta a continuación
Stefan Horning, el
1
Esto también funcionó para mí. Algunas instrucciones incluyen sudo reboot nowy otras no.
rjurney
232

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

Para chino, mira mi blog -> 中文 版

El mensaje de error

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

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

Como hacer eso ?

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

lsmod | grep nvidia

puedes obtener

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 nvidiamod, por lo que debemos descargar el módulo dependiendo denvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

entonces, descarga nvidia

sudo rmmod nvidia

Solución de problemas

si obtiene un error como rmmod: ERROR: Module nvidia is in use, que indica que el módulo del núcleo está en uso, debe eliminar el proceso que usa el kmod:

sudo lsof / dev / nvidia *

y luego mata esos procesos, luego continúa descargando los kmods

Prueba

confirme que descargó con éxito esos kmods

lsmod | grep nvidia

no debería obtener nada, luego confirme que puede cargar el controlador correcto

nvidia-smi

deberías obtener la salida correcta

Comzyh
fuente
3
@suraj no solo está vinculado. La respuesta está bien escrita. el único problema es que él no reveló su afiliación y tú lo hiciste.
Sagar V
2
@KiralyCraft El incorrecto ya no existe en el disco, pero aún está en la memoria. nvidia-smi simplemente desencadenó un nuevo procedimiento de carga, creo.
Comzyh el
1
¡Brillante! No tenía idea de que esto fue lo que causó el problema. Entonces, ¿reiniciar hace lo mismo?
alys
1
@alys Obviamente, el reinicio descargará y luego volverá a cargar todo el módulo.
Comzyh
1
funcionó pero reiniciar me devuelve el problema ... y mi resolución tampoco es la correcta. No es una instalación limpia en absoluto ...
Kevin He
14

Entonces estaba teniendo este problema, ninguno de los otros remedios funcionó. El mensaje de error era opaco, pero verificar dmesg fue clave:

[   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 de kernel restantes nvidia-384*. Pero incluso después de reiniciar, todavía recibía esto. Ver esto significaba que el kernel todavía estaba compilado para la referencia 384, pero solo estaba encontrando 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/ kernel / drivers

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

UserOneFourTwo
fuente
¡Muchas gracias! Es una buena idea usar locate nvidia-smi. Usé el comando para descubrir que otro controlador estaba instalado.
hao
sudo update-initramfs -c -k uname -rNo me ayudó.
mrgloom
dmesgsalida:NVRM: API mismatch: the client has the version 418.67, but NVRM: this kernel module has the version 430.26. Please NVRM: make sure that this kernel module and all NVIDIA driver NVRM: components have the same version.
mrgloom
9

Recibí el error failed to initialize NVML: Driver/Library version mismatchde mi nvidia-gpu-temperature-indicator. Y nvidia-smi no pudo imprimir ninguna información. Traté de encontrar si había otras versiones del controlador nvidia instaladas en mi ubuntu. Pero acabo de encontrar nvidia-driver-390. Al final, rebootme ayudó a resolver el problema.

Yossarian42
fuente
9

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 causar la instalación de dos versiones diferentes del controlador mediante diferentes enfoques. Por ejemplo, instale el controlador Nvidia por el apt y el instalador oficial.

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

Para resolver este problema, solo necesita ejecutar uno de los siguientes dos comandos.

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall
zhenlingcn
fuente
bash: / usr / bin / nvidia-uninstall: No existe tal archivo o directorio
Stepan Yakovenko
Funciona. A veces el archivo de desinstalación no existe.
Qinsheng Zhang
5

Esto también me sucedió en Ubuntu 16.04 usando el nvidia-348 paquete (última versión de nvidia en Ubuntu 16.04).

Sin embargo, podría resolver el problema mediante la instalación a nvidia-390través de los controladores de GPU patentados PPA .

Entonces, una solución al problema descrito en Ubuntu 16.04 es hacer esto:

  • sudo add-apt-repository ppa:graphics-drivers/ppa
  • sudo apt-get update
  • sudo apt-get install nvidia-390

Nota: Esta guía asume una instalación limpia de Ubuntu. Si tiene controladores anteriores instalados, es posible que sea necesario reiniciar para volver a cargar todos los módulos del kernel.

Stefan Horning
fuente
1
¡Esto y un reinicio lo hicieron por mí!
SaiBot
1

Tuve el problema también. (Estoy ejecutando ubuntu 18.04)

Lo que hice:

dpkg -l | grep -i nvidia

Entonces sudo apt-get remove --purge nvidia-381(y cada versión duplicada, en mi caso tenía 381, 384 y 387)

Luego sudo ubuntu-drivers devicespara enumerar lo que está disponible

Y elijo sudo apt install nvidia-driver-430

Después de esto, nvidia-smi dio la salida correcta (no es necesario reiniciar). Pero supongo que puede reiniciar cuando tenga dudas.

También seguí esta instalación para reinstalar cuda + cudnn.

Benjamin Crouzier
fuente
No sé por qué esto se marcó (-1). Lo incrementé a 0. El comando "dpkg -l | grep -i nvidia" es válido y muestra lo que no se elimina.
gerardg
1

Experimenté este problema después de una actualización normal del kernel en una máquina CentOS. Como todos los controladores y bibliotecas de CUDA y nVidia se han instalado a través de repositorios de YUM, logré resolver los problemas con los siguientes pasos:

sudo yum remove nvidia-driver-*
sudo reboot
sudo yum install nvidia-driver-cuda nvidia-modprobe
sudo modprobe nvidia # or just reboot

Se aseguró de que mi kernel y mi controlador nVidia sean consistentes. Creo que solo reiniciar puede dar como resultado que se cargue una versión incorrecta del módulo del kernel.

scrutari
fuente
¡Trabajado como un encanto!
máximo
1

Tengo que reiniciar mis núcleos y eliminar todos los paquetes que he instalado previamente (durante la primera instalación), asegúrese de eliminar todos los paquetes, incluso después de eliminarlos mediante el comando a continuación

sudo apt-get --purge eliminar " nvidia "

los paquetes como "libtinfo6: i386" no se eliminan

Estoy usando Ubuntu 20.04 y Nvidia-driver-440 para eso tienes que eliminar todos los paquetes que se muestran a continuación.

Lista de todos los paquetes que deben eliminarse:

img

como se muestra en la imagen, asegúrese de que el paquete que está instalando sea del tamaño correcto que sea 207 Mb para Nvidia-driver-440, si es menor significa que no ha eliminado todos los paquetes.

Gaurav Ghati
fuente
0

Para completar, me encontré con este problema también. En mi caso, resultó que porque había configurado Clang como mi compilador predeterminado (usando update-alternatives), nvidia-driver-440no pude compilar (verificar /var/crash/) a pesar de aptque no publiqué ninguna advertencia. Para mí, la solución era apt purge nvidia-*, ccvolver a usar gcc, reiniciar y reinstalar nvidia-driver-440.

Tom
fuente
-1

Cometí el contenedor en una imagen acoplable. Luego recreé otro contenedor usando esta imagen acoplable y el problema desapareció.

Berat
fuente
-1

Estas respuestas no me funcionaron:

https://stackoverflow.com/a/43023000/1179925

https://stackoverflow.com/a/45319156/1179925

https://stackoverflow.com/a/54349675/1179925

dmesg

NVRM: API mismatch: the client has the version 418.67, but
NVRM: this kernel module has the version 430.26.  Please
NVRM: make sure that this kernel module and all NVIDIA driver
NVRM: components have the same version.

Desinstale el controlador anterior 418.67e instale el nuevo controlador 430.26(descarga NVIDIA-Linux-x86_64-430.26.run):

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall
chmod +x NVIDIA-Linux-x86_64-430.26.run
sudo ./NVIDIA-Linux-x86_64-430.26.run
[ignore abort]

cat /proc/driver/nvidia/version

NVRM version: NVIDIA UNIX x86_64 Kernel Module  430.26  Tue Jun  4 17:40:52 CDT 2019
GCC version:  gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
mrgloom
fuente
-1

reiniciar. Si el problema persiste:

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia
nvidia-smi

por ciento / rhel

cd /boot
mv initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut -vf initramfs-$(uname -r).img $(uname -r)

luego

reboot
levinit
fuente