cuda - mac - Controlador NVIDIA NVML/versión de biblioteca no coinciden
nvidia developer cuda (8)
Cuando ejecuto
nvidia-smi
me sale el siguiente mensaje:
Failed to initialize NVML: Driver/library version mismatch
Hace una hora recibí el mismo mensaje y desinstalé mi biblioteca de cuda y pude ejecutar
nvidia-smi
, obteniendo el siguiente resultado:
Después de esto descargué
cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
de
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 desajuste mencionado.
Alguna información potencialmente útil:
Ejecutando
cat /proc/driver/nvidia/version
obtengo:
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!
Como dijo @etal, el reinicio 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
nvidia
mod, por lo que debemos descargar el módulo depende de
nvidia
sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm
entonces, descargue
nvidia
sudo rmmod nvidia
Solución de problemas
si obtiene un error como
rmmod: ERROR: Module nvidia is in use
, lo 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
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 comando de
locate
(no instalado por defecto) en lugar de buscar el sistema de archivos cada vez.
Esto también me sucedió en Ubuntu 16.04 usando el paquete
nvidia-348
(última versión de nvidia en Ubuntu 16.04).
Sin embargo, podría resolver el problema instalando
nvidia-390
travé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.
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 por 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
Para mi caso, he instalado el controlador nvidia y luego cuda. Descubrí que se puede solucionar simplemente instalando cuda. https://developer.nvidia.com/cuda-toolkit
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.
Tenía el problema también. (Estoy ejecutando ubuntu 18.04)
Lo que hice:
dpkg -l | grep -i nvidia
Luego
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 devices
para enumerar lo que está disponible
Y elijo
sudo apt install nvidia-driver-430
Después de eso,
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.
failed to initialize NVML: Driver/Library version mismatch
el error de error
failed to initialize NVML: Driver/Library version mismatch
con mi indicador de temperatura nvidia-gpu.
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,
reboot
me ayudó a resolver el problema.