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

231

Lorsque je cours, nvidia-smije reçois le message suivant:

Failed to initialize NVML: Driver/library version mismatch

Il y a une heure, j'ai reçu le même message et j'ai désinstallé ma bibliothèque cuda et j'ai pu exécuter nvidia-smi, obtenant 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.debpartir de la page officielle de NVIDIA , puis 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 j'obtiens l'erreur de non-correspondance mentionnée.


Quelques informations potentiellement utiles:

Courir cat /proc/driver/nvidia/versionje 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: 4.4.0-66-générique.

Merci!

etal
la source
12
Vous avez probablement mélangé une installation de runfile précédente avec votre installation (actuelle) de gestionnaire de paquets (apt-get). Suivez les instructions du guide d'installation de cuda linux pour supprimer tous les pilotes NVIDIA précédents et les fichiers CUDA, puis réinstallez-les après les avoir nettoyés. Avant de commencer votre réinstallation, vous voudrez peut-être lire l'intégralité du document du guide d'installation Linux que j'ai lié. Le conflit découle presque certainement de votre tentative d'installer le package CUDA 8 GA2 au-dessus de votre installation de pilote 378.13 existante.
Robert Crovella du
Je vote pour fermer cette question car il s'agit essentiellement d'une question d'installation (ou d'interruption de l'installation) des pilotes GPU et non directement liée à la programmation.
talonmies

Réponses:

340

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 que je l'ai eu.

etal
la source
2
n'oubliez pas de revenir dans quelques jours et d'accepter cette réponse afin que cette question tombe de la liste sans réponse pour le tag CUDA
talonmies
5
J'étais sceptique à propos de ce travail après un redémarrage, mais j'ai quand même essayé, et ça a fonctionné !! Merci!
Abhishek Potnis
8
@AbhishekPotnis Si vous vous demandez pourquoi le redémarrage a fonctionné, c'est peut-être à cause de cela: la vérification /var/log/apt/history.logsur Ubuntu a révélé que le système a automatiquement mis à jour libcuda, ce qui nécessitait probablement un redémarrage pour continuer à fonctionner correctement. J'ai depuis désactivé ces mises à jour dans l'espoir de ne plus les revoir.
John
1
Malheureusement, ce n'est pas une solution permanente. Le problème pourrait réapparaître. La solution consiste à installer une version plus récente du package nvidia ( nvidia-390). Voir ma réponse ci
Stefan Horning
1
Cela a également fonctionné pour moi. Certaines instructions incluent sudo reboot nowet d'autres non.
rjurney
232

Comme l'a dit @etal, 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 bonne version de kmod

Comment faire ça ?

Tout d'abord, nous devons 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 le nvidiamod, nous devons donc décharger le module dépend denvidia

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 comme rmmod: ERROR: Module nvidia is in use, qui indique que le module du noyau est en cours d'utilisation, vous devez tuer le processus utilisant le kmod:

sudo lsof / dev / nvidia *

puis tuer ces processus, puis continuer à décharger les kmods

Tester

confirmez que vous avez réussi à décharger ces kmods

lsmod | grep nvidia

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

nvidia-smi

vous devriez obtenir la sortie correcte

Comzyh
la source
3
@suraj ce n'est pas seulement lié. la réponse est bien écrite. le seul problème est qu'il n'a pas divulgué son affiliation et vous l'avez fait.
Sagar V
2
@KiralyCraft Le mauvais n'est plus sur le disque, mais toujours en mémoire. nvidia-smi vient de déclencher une nouvelle procédure de chargement je pense.
Comzyh
1
Brillant! Je ne savais pas que c'était ce qui avait causé le problème. Le redémarrage fait donc la même chose?
alys
1
@alys De toute évidence, le redémarrage déchargera puis rechargera tout le module.
Comzyh
1
a fonctionné mais le redémarrage ramène le problème .. et ma résolution n'est pas aussi bien. Ce n'est pas du tout une installation propre ..
Kevin He
14

J'avais donc 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 de noyau restants nvidia-384*. Mais même après le redémarrage, j'obtenais toujours cela. Voir cela signifiait que le noyau était toujours compilé à la référence 384, mais ne trouvait que 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 supprimé 384, j'avais encore 384 fichiers dans: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/ noyau / pilotes

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

UserOneFourTwo
la source
Merci beaucoup! C'est une bonne idée à utiliser locate nvidia-smi. J'ai utilisé la commande pour déterminer qu'un autre pilote a été installé.
hao
sudo update-initramfs -c -k uname -rNe m'a pas aidé.
mrgloom
dmesgsortie: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

J'ai reçu l'erreur failed to initialize NVML: Driver/Library version mismatchde mon indicateur de température nvidia-gpu-temperature. Et nvidia-smi n'a pu imprimer aucune information. J'ai essayé de trouver s'il y avait d'autres versions du pilote nvidia installées dans mon ubuntu. Mais je viens de trouver nvidia-driver-390. En fin de compte, cela rebootm'a aidé à résoudre le problème.

Yossarian42
la source
9

Les 2 premières réponses ne peuvent pas résoudre mon problème. J'ai trouvé une solution sur le forum officiel de Nvidia qui a résolu mon problème. Les informations d'erreur ci-dessous peuvent être provoquées par l'installation de deux versions différentes du pilote par des approches différentes. Par exemple, installez le pilote Nvidia par apt et le programme d'installation officiel.

Échec de l'initialisation de NVML: incompatibilité de version de pilote / bibliothèque

Pour résoudre ce problème, il suffit d'exécuter l'une des deux commandes suivantes.

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall
zhenlingcn
la source
bash: / usr / bin / nvidia-uninstall: aucun fichier ou répertoire de ce type
Stepan Yakovenko
Ça marche. Parfois, le fichier de désinstallation n'existe pas.
Qinsheng Zhang
5

Cela m'est également arrivé sur Ubuntu 16.04 en utilisant le nvidia-348package (dernière version nvidia sur Ubuntu 16.04).

Cependant, je pouvais résoudre le problème en installant nvidia-390via 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 Ubuntu propre. Si vous avez installé des pilotes précédents, un redémarrage peut être nécessaire pour recharger tous les modules du noyau.

Stefan Horning
la source
1
Cela et un redémarrage l'ont fait pour moi!
SaiBot
1

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

Ce que j'ai fait:

dpkg -l | grep -i nvidia

Ensuite sudo apt-get remove --purge nvidia-381(et chaque version en double, dans mon cas, j'avais 381, 384 et 387)

Ensuite, sudo ubuntu-drivers devicespour lister ce qui est disponible

Et je choisis sudo apt install nvidia-driver-430

Après cela, a nvidia-smidonné la sortie correcte (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.

Benjamin Crouzier
la source
Je ne sais pas pourquoi cela a été marqué (-1). Je l'ai incrémenté à 0. La commande "dpkg -l | grep -i nvidia" est valide et montre ce qui n'est pas supprimé.
gerardg
1

J'ai rencontré ce problème après une mise à jour normale du noyau sur une machine CentOS. Étant donné que tous les pilotes et bibliothèques CUDA et nVidia ont été installés via les référentiels YUM, j'ai réussi à résoudre les problèmes en suivant les étapes suivantes:

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

Il s'est assuré que mon noyau et mon pilote nVidia sont cohérents. Je pense que le redémarrage peut entraîner le chargement d'une mauvaise version du module du noyau.

scrutari
la source
A fonctionné comme un charme!
max
1

Je dois redémarrer mes noyaux et supprimer tous les packages que j'ai installés précédemment (lors de la première installation), assurez-vous de supprimer tous les packages, même après avoir supprimé les packages par la commande ci-dessous

sudo apt-get --purge supprimer " nvidia "

les paquets comme "libtinfo6: i386" ne sont pas supprimés

J'utilise Ubuntu 20.04 et Nvidia-driver-440 pour cela, vous devez supprimer tous les packages affichés ci-dessous image

Liste de tous les packages à supprimer:

img

comme indiqué dans l'image, assurez-vous que le package que vous installez est de la bonne taille qui est 207 Mo pour Nvidia-driver-440, si c'est moins, cela signifie que vous n'avez pas supprimé tous les packages.

Gaurav Ghati
la source
0

J'avais réinstallé le pilote nvidia: exécutez ces commandes en rootmode:

  1. systemctl isolate multi-user.target

  2. modprobe -r nvidia-drm

  3. Réinstallez le pilote Nvidia: chmod +x NVIDIA-Linux-x86_64–410.57.run

  4. systemctl start graphical.target

et enfin vérifier nvidia-smi

Merci à: Comment installer les pilotes Nvidia et CUDA-10.0 pour le GPU RTX 2080 Ti sur Ubuntu-16.04 / 18.04

Comment décharger le module du noyau 'nvidia-drm'?

BarzanHayati
la source
0

Pour être complet, j'ai également rencontré ce problème. Dans mon cas, il s'est avéré que parce que j'avais défini Clang comme mon compilateur par défaut (en utilisant update-alternatives), je n'ai pas nvidia-driver-440réussi à compiler (vérifier /var/crash/) même si je n'ai publié aptaucun avertissement. Pour moi, la solution consistait à apt purge nvidia-*, ccrevenir à utiliser gcc, redémarrer et réinstaller nvidia-driver-440.

À M
la source
-1

J'ai validé le conteneur dans une image docker. Ensuite, je recrée un autre conteneur à l'aide de cette image Docker et le problème a disparu.

Berat
la source
-1

Ces réponses n'ont pas fonctionné pour moi:

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.

Désinstallez l'ancien pilote 418.67et installez le nouveau pilote 430.26(téléchargement 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
la source
-1

redémarrer. Si le problème persiste:

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

pour cent / rhel

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

puis

reboot
levinit
la source