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:
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!
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.
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
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
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
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
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.
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.
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.
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.