Nicht übereinstimmende NVIDIA NVML-Treiber- / Bibliotheksversion


225

Wenn ich renne, nvidia-smierhalte ich folgende Meldung:

Failed to initialize NVML: Driver/library version mismatch

Vor einer Stunde erhielt ich dieselbe Nachricht und deinstallierte meine Cuda-Bibliothek. Ich konnte ausgeführt nvidia-smiwerden und das folgende Ergebnis erhalten:

nvidia-smi-Ergebnis

Danach habe ich cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debvon der offiziellen NVIDIA-Seite heruntergeladen und dann einfach:

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

Jetzt habe ich cuda installiert, aber ich erhalte den erwähnten Fehlanpassungsfehler.


Einige potenziell nützliche Informationen:

Laufen cat /proc/driver/nvidia/versionbekomme ich:

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)

Ich verwende Ubuntu 16.04.2 LTS.

Kernel-Release ist: 4.4.0-66-generic.

Vielen Dank!


12
Sie haben wahrscheinlich eine vorherige Runfile-Installation mit Ihrer (aktuellen) Paketmanager-Installation (apt-get) gemischt. Befolgen Sie die Anweisungen im Installationshandbuch für cuda linux , um alle vorherigen NVIDIA-Treiber- und CUDA-Dateien zu entfernen, und installieren Sie sie erneut, nachdem Sie sie bereinigt haben. Bevor Sie mit der Neuinstallation beginnen, sollten Sie das gesamte von mir verlinkte Linux-Installationshandbuch lesen. Der Konflikt ergibt sich mit ziemlicher Sicherheit aus Ihrem Versuch, das CUDA 8 GA2-Paket zusätzlich zu Ihrer vorhandenen 378.13-Treiberinstallation zu installieren.
Robert Crovella

Ich stimme dafür, diese Frage zu schließen, da es sich im Grunde genommen um eine Frage zur Installation (oder zum Unterbrechen der Installation von) GPU-Treibern handelt, die nicht direkt mit der Programmierung zusammenhängt.
Talonmies

Antworten:


336

Überraschung Überraschung, Neustart löste das Problem (ich dachte, ich hätte das bereits versucht).

Die in den Kommentaren erwähnte Lösung von Robert Crovella kann auch für andere nützlich sein, da sie der Lösung des Problems beim ersten Mal ziemlich ähnlich ist.


2
Bitte denken Sie daran, in ein paar Tagen
wiederzukommen

5
Ich war skeptisch, dass dies nach einem Neustart funktioniert, aber ich habe es trotzdem versucht und es hat funktioniert !! Vielen Dank!
Abhishek Potnis

8
@AbhishekPotnis Wenn Sie sich fragen, warum ein Neustart funktioniert hat, kann dies daran liegen: Die Überprüfung /var/log/apt/history.logunter Ubuntu ergab, dass das System libcuda automatisch aktualisiert hat, was vermutlich einen Neustart erforderlich machte, um weiterhin ordnungsgemäß zu funktionieren. Ich habe diese Updates seitdem deaktiviert, in der Hoffnung, dass ich sie nicht wieder sehe.
John

1
Leider ist dies keine dauerhafte Lösung. Das Problem könnte erneut auftreten. Die Lösung besteht darin, eine neuere Version des nvidia-Pakets ( nvidia-390) zu installieren . Siehe meine Antwort unten
Stefan Horning

1
Das hat auch bei mir funktioniert. Einige Anweisungen enthalten sudo reboot nowund andere nicht.
rjurney

232

Wie @etal sagte, kann ein Neustart dieses Problem lösen, aber ich denke, ein Verfahren ohne Neustart wird helfen.

Für Chinesisch überprüfen Sie meinen Blog -> 中文 版

Die Fehlermeldung

NVML: Nicht übereinstimmende Treiber- / Bibliotheksversion

Sagen Sie uns, dass das Nvidia-Treiber-Kernelmodul (kmod) eine falsche Version hat. Daher sollten wir diesen Treiber entladen und dann die richtige Version von kmod laden

Wie geht das ?

Zuerst sollten wir wissen, welche Treiber geladen sind.

lsmod | grep nvidia

Sie können bekommen

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

Unser letztes Ziel ist es, nvidiaMod zu entladen , also sollten wir das Modul abhängig davon entladennvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

dann entladen nvidia

sudo rmmod nvidia

Fehlerbehebung

Wenn Sie einen Fehler wie erhalten rmmod: ERROR: Module nvidia is in use, der darauf hinweist, dass das Kernelmodul verwendet wird, sollten Sie den Prozess beenden, der das kmod verwendet:

sudo lsof / dev / nvidia *

und dann diesen Prozess beenden, dann weiterhin die kmods entladen

Prüfung

Bestätigen Sie, dass Sie diese kmods erfolgreich entladen haben

lsmod | grep nvidia

Sie sollten nichts bekommen und dann bestätigen, dass Sie den richtigen Treiber laden können

nvidia-smi

Sie sollten die richtige Ausgabe erhalten


3
@suraj es ist nicht nur verknüpft. Die Antwort ist gut geschrieben. Das einzige Problem ist, dass er seine Zugehörigkeit nicht bekannt gegeben hat und Sie es getan haben.
Sagar V

2
@KiralyCraft Das falsche ist nicht mehr auf der Festplatte vorhanden, aber immer noch im Speicher. nvidia-smi löst einfach einen neuen Ladevorgang aus, denke ich.
Comzyh

1
Brillant! Hatte keine Ahnung, dass dies das Problem verursachte. Ein Neustart macht also dasselbe?
Alys

1
@alys Beim Neustart wird natürlich das gesamte Modul entladen und anschließend neu geladen.
Comzyh

1
hat funktioniert, aber ein Neustart bringt das Problem zurück. Und meine Lösung stimmt auch nicht. Es ist überhaupt keine saubere Installation.
Kevin He

14

Also hatte ich dieses Problem, keines der anderen Mittel hat funktioniert. Die Fehlermeldung war undurchsichtig, aber die Überprüfung von dmesg war der Schlüssel:

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

Ich hatte jedoch die 384-Version vollständig entfernt und alle verbleibenden Kerneltreiber entfernt nvidia-384*. Aber selbst nach dem Neustart bekam ich das immer noch. Dies zu sehen bedeutete, dass der Kernel immer noch auf Referenz 384 kompiliert wurde, aber nur 410 fand. Also kompilierte ich meinen Kernel neu:

# 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

Und dann hat es funktioniert.

Nach dem Entfernen von 384 hatte ich noch 384 Dateien in: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/ Kernel / Treiber

Ich empfehle, den locateBefehl (nicht standardmäßig installiert) zu verwenden, anstatt jedes Mal das Dateisystem zu durchsuchen.


Vielen Dank! Es ist eine gute Idee zu verwenden locate nvidia-smi. Ich habe den Befehl verwendet, um herauszufinden, dass ein anderer Treiber installiert wurde.
hao

sudo update-initramfs -c -k uname -rHat mir nicht geholfen.
Mrgloom

dmesgAusgabe: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

Ich habe den Fehler failed to initialize NVML: Driver/Library version mismatchvon meinem NVIDIA-GPU-Temperatur-Indikator erhalten. Und nvidia-smi konnte keine Informationen drucken. Ich habe versucht herauszufinden, ob in meinem Ubuntu andere Versionen des NVIDIA-Treibers installiert sind. Aber ich habe gerade nvidia-driver-390 gefunden. Am Ende hat rebootmir geholfen, das Problem zu lösen.


9

Die Top-2-Antworten können mein Problem nicht lösen. Ich habe im offiziellen Nvidia-Forum eine Lösung gefunden, die mein Problem gelöst hat. Die folgenden Fehlerinformationen können dazu führen, dass zwei verschiedene Versionen des Treibers auf unterschiedliche Weise installiert werden. Installieren Sie beispielsweise den Nvidia-Treiber von der apt und dem offiziellen Installationsprogramm.

NVML konnte nicht initialisiert werden: Nicht übereinstimmende Treiber- / Bibliotheksversion

Um dieses Problem zu lösen, müssen Sie nur einen der beiden folgenden Befehle ausführen.

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall

bash: / usr / bin / nvidia-uninstall: Keine solche Datei oder Verzeichnis
Stepan Yakovenko

Es klappt. Manchmal existiert die Deinstallationsdatei nicht.
Qinsheng Zhang

5

Dies ist mir auch unter Ubuntu 16.04 mit dem nvidia-348Paket passiert (neueste NVIDIA-Version unter Ubuntu 16.04).

Ich könnte das Problem jedoch beheben, indem ich es nvidia-390über die PPA für proprietäre GPU-Treiber installiere .

Eine Lösung für das beschriebene Problem unter Ubuntu 16.04 lautet also:

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

Hinweis: In diesem Handbuch wird von einer sauberen Ubuntu-Installation ausgegangen. Wenn Sie frühere Treiber installiert haben, ist möglicherweise ein Neustart erforderlich, um alle Kernelmodule neu zu laden.


1
Dies und ein Neustart haben es für mich getan!
SaiBot

1

Hatte das Problem auch. (Ich verwende Ubuntu 18.04)

Was ich getan habe:

dpkg -l | grep -i nvidia

Dann sudo apt-get remove --purge nvidia-381(und jede doppelte Version, in meinem Fall hatte ich 381, 384 und 387)

Dann sudo ubuntu-drivers devicesauflisten, was verfügbar ist

Und ich wähle sudo apt install nvidia-driver-430

Danach nvidia-smigab die korrekte Ausgabe (kein Neustart erforderlich). Aber ich nehme an, Sie können im Zweifelsfall neu starten.

Ich folgte auch dieser Installation , um cuda + cudnn neu zu installieren.


Ich weiß nicht, warum dies mit (-1) markiert wurde. Ich habe es auf 0 erhöht. Der Befehl "dpkg -l | grep -i nvidia" ist gültig und zeigt an, was nicht gelöscht wird.
Gerardg

1

Dieses Problem trat nach einem normalen Kernel-Update auf einem CentOS-Computer auf. Da alle CUDA- und nVidia-Treiber und -Bibliotheken über YUM-Repositorys installiert wurden, konnte ich die Probleme mithilfe der folgenden Schritte lösen:

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

Es stellte sicher, dass mein Kernel und mein nVidia-Treiber konsistent sind. Ich gehe davon aus, dass ein Neustart dazu führen kann, dass eine falsche Version des Kernelmoduls geladen wird.


Lief wie am Schnürchen!
Max

1

Ich muss meine Kernel neu starten und alle Pakete entfernen, die ich zuvor installiert habe (während der ersten Installation). Bitte stellen Sie sicher, dass Sie alle Pakete löschen, auch nachdem Sie die Pakete mit dem folgenden Befehl entfernt haben

sudo apt-get --purge entferne " nvidia "

Pakete wie "libtinfo6: i386" werden nicht entfernt

Ich verwende Ubuntu 20.04 und Nvidia-driver-440, dafür müssen Sie alle unten gezeigten Pakete entfernen

Liste aller Pakete, die entfernt werden müssen:

img

Stellen Sie wie in der Abbildung gezeigt sicher, dass das von Ihnen installierte Paket die richtige Größe von 207 MB für Nvidia-driver-440 hat. Wenn es weniger ist, bedeutet dies, dass Sie nicht alle Pakete entfernt haben.



-1

Ich habe den Container in ein Docker-Image übernommen. Dann erstelle ich mit diesem Docker-Image einen weiteren Container und das Problem war behoben.


-1

Diese Antworten haben bei mir nicht funktioniert:

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.

Deinstallieren Sie den alten Treiber 418.67und installieren Sie den neuen Treiber 430.26(Download 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)

-1

Neustart. Wenn das Problem weiterhin besteht:

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

für cent / rhel

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

dann

reboot

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.