it-swarm.com.de

NVIDIA NVML Treiber-/Bibliotheksversion stimmt nicht überein

Wenn ich nvidia-smi starte, erhalte ich die folgende Meldung:

Failed to initialize NVML: Driver/library version mismatch

Vor einer Stunde erhielt ich dieselbe Nachricht und deinstallierte meine cuda-Bibliothek. Ich konnte nvidia-smi ausführen und erhielt folgendes Ergebnis:

 nvidia-smi-result

Danach habe ich cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_AMD64.deb von 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 bekomme den erwähnten Unstimmigkeitsfehler.


Einige möglicherweise nützliche Informationen:

Laufen cat /proc/driver/nvidia/version bekomme 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-generisch.

Vielen Dank!

118
etal

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

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

182
etal

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

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

Die Fehlermeldung

NVML: Treiber-/Bibliotheksversion stimmt nicht überein

sagen Sie uns, das Nvidia-Treiberkernmodul (kmod) hat eine falsche Version. Daher sollten Sie diesen Treiber entladen und dann die korrekte Version von kmod laden

Wie geht das ?

Zunächst sollten wir wissen, welche Treiber geladen werden.

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, nvidia mod zu entladen, also sollten wir das Modul entladen, abhängig von nvidia

Sudo rmmod nvidia_drm
Sudo rmmod nvidia_modeset
Sudo rmmod nvidia_uvm 

dann nvidia entladen

Sudo rmmod nvidia

Fehlerbehebung

wenn Sie eine Fehlermeldung wie rmmod: ERROR: Module nvidia is in use erhalten, die angibt, dass das Kernel-Modul verwendet wird, sollten Sie den Prozess beenden, der das kmod verwendet:

Sudo lsof/dev/nvidia *

und dann töten Sie diese Prozesse und entladen Sie dann die kmods weiter

Prüfung

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

lsmod | grep nvidia

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

nvidia-smi

sie sollten die korrekte Ausgabe erhalten

152
Comzyh

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

Ich könnte das Problem jedoch beheben, indem Sie nvidia-390 über die Proprietary GPU Drivers PPA installieren.

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

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

Hinweis: Dieses Handbuch setzt eine saubere Ubuntu-Installation voraus. Wenn Sie bereits Treiber installiert haben, ist ein Neustart erforderlich, um alle Kernelmodule neu zu laden.

2
Stefan Horning

Ich habe den Fehler failed to initialize NVML: Driver/Library version mismatch von meiner NVIDIA-GPU-Temperaturanzeige erhalten. Und nvidia-smi hat keine Informationen gedruckt. Ich habe versucht herauszufinden, ob andere Versionen des NVIDIA-Treibers in meinem Ubuntu installiert sind. Aber ich habe gerade nvidia-driver-390 gefunden. Am Ende half mir reboot, das Problem zu lösen.

1
Yossarian42

Ich hatte also dieses Problem, keine der anderen Mittel funktionierte. Die Fehlermeldung war undurchsichtig, aber das Überprüfen 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 verbleibende Kerneltreiber nvidia-384* entfernt. Aber auch nach dem Neustart bekam ich das immer noch. Dies zu sehen bedeutete, dass der Kernel immer noch als Referenz 384 kompiliert wurde, aber nur 410 gefunden hatte. Ich stellte also meinen Kernel neu zusammen:

# 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. 0-43-generisch/Kernel/Treiber

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

1
UserOneFourTwo

Hatte das Problem auch. (Ich laufe 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 devices, um aufzulisten, was verfügbar ist

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

Danach gab nvidia-smi die richtige Ausgabe aus (kein Neustart erforderlich). Aber ich nehme an, Sie können im Zweifelsfall einen Neustart durchführen.

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

0