web-dev-qa-db-fra.com

NVIDIA NVML Incompatibilité de version de pilote/bibliothèque

Lorsque je lance nvidia-smi, le message suivant s'affiche:

Failed to initialize NVML: Driver/library version mismatch

Il y a une heure, j'ai reçu le même message et désinstallé ma bibliothèque cuda. ​​J'ai pu exécuter nvidia-smi et obtenir le résultat suivant:

 nvidia-smi-result

Après cela, j'ai téléchargé cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_AMD64.deb depuis la page officielle de NVIDIA puis tout simplement:

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}}

Maintenant, j'ai installé cuda, mais je reçois l'erreur de non-concordance mentionnée.


Quelques informations potentiellement utiles:

En cours d'exécution cat /proc/driver/nvidia/version je reçois:

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)

J'utilise Ubuntu 16.04.2 LTS.

La version du noyau est la suivante: 4.4.0-66-generic.

Merci!

118
etal

Surprise surprise, le redémarrage a résolu le problème (je pensais l'avoir déjà essayé).

La solution mentionnée par Robert Crovella dans les commentaires peut également être utile à quelqu'un d'autre, car elle est assez similaire à ce que j'ai fait pour résoudre le problème la première fois.

182
etal

Comme @etal a dit, le redémarrage peut résoudre ce problème, mais je pense qu'une procédure sans redémarrage aidera. 

Pour le chinois, consultez mon blog -> 中文 版

Le message d'erreur

NVML: Incompatibilité de version de pilote/bibliothèque

dites-nous que le module du noyau du pilote Nvidia (kmod) a une mauvaise version; nous devons donc décharger ce pilote, puis charger la version correcte de kmod

Comment faire ça ?

Premièrement, nous devrions savoir quels pilotes sont chargés.

lsmod | Grep Nvidia

vous pouvez obtenir 

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

notre objectif final est de décharger nvidia mod, nous devrions donc décharger le module dépend de nvidia

Sudo rmmod nvidia_drm
Sudo rmmod nvidia_modeset
Sudo rmmod nvidia_uvm 

puis, déchargez nvidia

Sudo rmmod nvidia

Dépannage

si vous obtenez une erreur telle que rmmod: ERROR: Module nvidia is in use, qui indique que le module du noyau est en cours d'utilisation, vous devez arrêter le processus utilisant le kmod:

Sudo lsof/dev/nvidia *

puis tuez ces processus, puis continuez à décharger les kmods

Tester

confirmez que vous déchargez correctement ces kmods

lsmod | Grep Nvidia

vous ne devriez rien obtenir, puis confirmez que vous pouvez charger le bon pilote

nvidia-smi

vous devriez obtenir le bon résultat

152
Comzyh

Cela m'est également arrivé sous Ubuntu 16.04 en utilisant le paquetage nvidia-348 (la dernière version de nvidia sous Ubuntu 16.04).

Cependant, je pourrais résoudre le problème en installant nvidia-390 via le PPA des pilotes GPU propriétaires .

Donc, une solution au problème décrit sur Ubuntu 16.04 est la suivante:

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

Remarque: Ce guide suppose une installation propre d’Ubuntu. Si vous avez déjà installé des pilotes, un redémarrage est nécessaire pour recharger tous les modules du noyau.

2
Stefan Horning

J'ai eu l'erreur failed to initialize NVML: Driver/Library version mismatch de mon indicateur de température nvidia-gpu. Et nvidia-smi n’a réussi à imprimer aucune information. J'ai essayé de trouver si d'autres versions du pilote nvidia étaient installées sur mon Ubuntu. Mais je viens de trouver nvidia-driver-390. reboot m'a finalement aidé à résoudre le problème.

1
Yossarian42

Donc, j'avais ce problème, aucun des autres remèdes n'a fonctionné. Le message d'erreur était opaque, mais la vérification de dmesg était la clé:

[   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.

Cependant, j'avais complètement supprimé la version 384 et supprimé tous les pilotes restants du noyau nvidia-384*. Mais même après le redémarrage, je continuais à avoir cela. Voir cela signifiait que le noyau était toujours compilé avec la référence 384, mais qu'il en trouvait seulement 410. J'ai donc recompilé mon noyau:

# 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

Et puis ça a marché. 

Après avoir retiré 384 fichiers, il me restait encore 384 fichiers dans: 0-43-generic/kernel/drivers

Je recommande d'utiliser la commande locate (non installée par défaut) plutôt que de rechercher le système de fichiers à chaque fois.

1
UserOneFourTwo

Eu le problème aussi. (Je cours Ubuntu 18.04)

Ce que j'ai fait:

dpkg -l | grep -i nvidia

Ensuite, Sudo apt-get remove --purge nvidia-381 (et chaque copie, dans mon cas, j'avais 381, 384 et 387)

Puis Sudo ubuntu-drivers devices pour lister ce qui est disponible

Et je choisis Sudo apt install nvidia-driver-430

Après cela, nvidia-smi a donné le bon résultat (pas besoin de redémarrer). Mais je suppose que vous pouvez redémarrer en cas de doute.

J'ai également suivi cette installation pour réinstaller cuda + cudnn.

0
Benjamin Crouzier