Mancata corrispondenza della versione del driver / libreria NVIDIA NVML


229

Quando corro nvidia-smiricevo il seguente messaggio:

Failed to initialize NVML: Driver/library version mismatch

Un'ora fa ho ricevuto lo stesso messaggio e disinstallato la mia libreria cuda e sono stato in grado di eseguire nvidia-smi, ottenendo il seguente risultato:

nvidia-smi-risultato

Dopo questo ho scaricato cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debdalla pagina ufficiale NVIDIA e poi semplicemente:

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

Ora ho installato cuda, ma ottengo l'errore di mancata corrispondenza menzionato.


Alcune informazioni potenzialmente utili:

In esecuzione cat /proc/driver/nvidia/versionottengo:

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)

Sto eseguendo Ubuntu 16.04.2 LTS.

La versione del kernel è: 4.4.0-66-generica.

Grazie!


12
Probabilmente hai mescolato una precedente installazione del file di esecuzione con la tua (attuale) installazione del gestore pacchetti (apt-get). Seguire le istruzioni nella guida all'installazione di cuda linux per rimuovere tutti i precedenti driver NVIDIA e file CUDA, quindi reinstallarli dopo averli ripuliti. Prima di iniziare la reinstallazione, potresti voler leggere l'intero documento della guida all'installazione di Linux che ho collegato. Il conflitto nasce quasi sicuramente dal tentativo di installare il pacchetto CUDA 8 GA2 sopra l'installazione del driver 378.13 esistente.
Robert Crovella,

Sto votando per chiudere questa domanda in quanto si tratta fondamentalmente di una domanda sull'installazione (o interruzione dell'installazione di) driver GPU e non direttamente correlata alla programmazione.
Talonmies

Risposte:


338

Sorpresa sorpresa, il riavvio ha risolto il problema (pensavo di averlo già provato).

La soluzione citata da Robert Crovella nei commenti può essere utile anche a qualcun altro, poiché è abbastanza simile a quello che ho fatto per risolvere il problema la prima volta che l'ho avuto.


2
ricordati di tornare tra qualche giorno e accettare questa risposta, quindi questa domanda cade dall'elenco senza risposta per il tag CUDA
talonmies

5
Ero scettico su questo lavoro dopo un riavvio, ma comunque ci ho provato e ha funzionato !! Grazie!
Abhishek Potnis,

8
@AbhishekPotnis Se ti stai chiedendo perché il riavvio ha funzionato, potrebbe essere per questo: il controllo /var/log/apt/history.logsu Ubuntu ha rivelato che il sistema ha aggiornato automaticamente libcuda, che presumibilmente ha richiesto un riavvio per continuare a funzionare correttamente. Da allora ho disabilitato quegli aggiornamenti nella speranza di non vederli più.
Giovanni,

1
Purtroppo questa non è una soluzione permanente. Il problema potrebbe riapparire. La soluzione è installare una versione più recente del pacchetto nvidia ( nvidia-390). Vedi la mia risposta qui sotto
Stefan Horning,

1
Questo ha funzionato anche per me. Alcune istruzioni includono sudo reboot nowe altre no.
rjurney,

232

Come ha detto @etal, il riavvio può risolvere questo problema, ma penso che una procedura senza riavvio aiuterà.

Per il cinese, controlla il mio blog -> 中文 版

Il messaggio di errore

NVML: mancata corrispondenza della versione del driver / della libreria

dicci che il modulo del kernel del driver Nvidia (kmod) ha una versione errata, quindi dovremmo scaricare questo driver e quindi caricare la versione corretta di kmod

Come farlo ?

Innanzitutto, dovremmo sapere quali driver sono caricati.

lsmod | grep nvidia

potresti avere

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

il nostro obiettivo finale è quello di scaricare nvidiamod, quindi dovremmo scaricare il modulo da cui dipendiamonvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

quindi scaricare nvidia

sudo rmmod nvidia

Risoluzione dei problemi

se viene visualizzato un errore simile rmmod: ERROR: Module nvidia is in use, che indica che il modulo del kernel è in uso, è necessario interrompere il processo che utilizza il kmod:

sudo lsof / dev / nvidia *

e poi uccidi quel processo, quindi continua a scaricare i kmod

Test

conferma di scaricare correttamente quei kmod

lsmod | grep nvidia

non si dovrebbe ottenere nulla, quindi confermare che è possibile caricare il driver corretto

nvidia-smi

dovresti ottenere l'output corretto


3
@suraj non è solo collegato. la risposta è ben scritta. l'unico problema è che non ha rivelato la sua affiliazione e tu l'hai fatto.
Sagar V,

2
@KiralyCraft Quello sbagliato non esiste più sul disco, ma è ancora in memoria. nvidia-smi ha appena innescato una nuova procedura di caricamento, credo.
Comzyh,

1
Brillante! Non avevo idea che questo fosse ciò che causava il problema. Quindi il riavvio fa la stessa cosa?
alys

1
@alys Ovviamente, il riavvio verrà scaricato e quindi ricaricato tutto il modulo.
Comzyh,

1
ha funzionato ma il riavvio riporta il problema ... e anche la mia risoluzione non è corretta. Non è affatto un'installazione pulita ..
Kevin He

14

Quindi stavo avendo questo problema, nessuno degli altri rimedi ha funzionato. Il messaggio di errore era opaco, ma il controllo di dmesg era fondamentale:

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

Tuttavia, avevo rimosso completamente la versione 384 e rimosso tutti i driver del kernel rimanenti nvidia-384*. Ma anche dopo il riavvio, stavo ancora ottenendo questo. Vedere questo significava che il kernel era ancora compilato per fare riferimento a 384, ma stava trovando solo 410. Quindi ho ricompilato il mio kernel:

# 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

E poi ha funzionato.

Dopo aver rimosso 384, avevo ancora 384 file in: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/ kernel / drivers

Consiglio di usare il locatecomando (non installato di default) piuttosto che cercare ogni volta il filesystem.


Molte grazie! È una buona idea da usare locate nvidia-smi. Ho usato il comando per capire che era installato un altro driver.
hao,

sudo update-initramfs -c -k uname -rNon mi ha aiutato.
MrGloom,

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

Ho ricevuto l'errore failed to initialize NVML: Driver/Library version mismatchdal mio indicatore nvidia-gpu-temperature. E nvidia-smi non è riuscito a stampare alcuna informazione. Ho provato a scoprire se c'erano altre versioni del driver NVIDIA installate nel mio Ubuntu. Ma ho appena trovato nvidia-driver-390. Alla fine, rebootmi ha aiutato a risolvere il problema.


9

Le prime 2 risposte non possono risolvere il mio problema. Ho trovato una soluzione nel forum ufficiale di Nvidia risolto il mio problema. Le seguenti informazioni di errore possono causare l'installazione di due diverse versioni del driver con approcci diversi. Ad esempio, installare il driver Nvidia da apt e dal programma di installazione ufficiale.

Inizializzazione NVML non riuscita: mancata corrispondenza della versione del driver / della libreria

Per risolvere questo problema, è sufficiente eseguire uno dei due comandi seguenti.

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

bash: / usr / bin / nvidia-uninstall: nessun file o directory del genere
Stepan Yakovenko,

Funziona. A volte il file di disinstallazione non esiste.
Qinsheng Zhang,

5

Questo è successo anche a me su Ubuntu 16.04 usando il nvidia-348pacchetto (ultima versione di nvidia su Ubuntu 16.04).

Tuttavia, ho potuto risolvere il problema installando nvidia-390tramite i driver GPU proprietari PPA .

Quindi una soluzione al problema descritto su Ubuntu 16.04 sta facendo questo:

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

Nota: questa guida presuppone un'installazione di Ubuntu pulita. Se sono stati installati driver precedenti, potrebbe essere necessario riavviare il computer per ricaricare tutti i moduli del kernel.


1
Questo e un riavvio lo hanno fatto per me!
SaiBot,

1

Aveva anche il problema. (Sto eseguendo Ubuntu 18.04)

Cosa ho fatto:

dpkg -l | grep -i nvidia

Quindi sudo apt-get remove --purge nvidia-381(e ogni versione duplicata, nel mio caso avevo 381, 384 e 387)

Quindi sudo ubuntu-drivers devicesper elencare ciò che è disponibile

E io scelgo sudo apt install nvidia-driver-430

Successivamente, ha nvidia-smifornito l'output corretto (non è necessario riavviare). Ma suppongo che tu possa riavviare in caso di dubbio.

Ho anche seguito questa installazione per reinstallare cuda + cudnn.


Non so perché questo sia stato segnato in basso (-1). L'ho incrementato a 0. Il comando "dpkg -l | grep -i nvidia" è valido e mostra ciò che non è stato eliminato.
Gerardg,

1

Ho riscontrato questo problema dopo un normale aggiornamento del kernel su una macchina CentOS. Poiché tutti i driver e le librerie CUDA e nVidia sono stati installati tramite repository YUM, sono riuscito a risolvere i problemi utilizzando i seguenti passaggi:

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

Mi ha assicurato che il mio kernel e il mio driver nVidia sono coerenti. Ritengo che il solo riavvio possa comportare il caricamento di una versione errata del modulo del kernel.


Ha funzionato come un fascino!
max

1

Devo riavviare i miei kernel e rimuovere tutti i pacchetti che ho installato in precedenza (durante la prima installazione), assicurati di eliminare tutti i pacchetti, anche dopo aver rimosso i pacchetti con il comando seguente

sudo apt-get --purge rimuovi " nvidia "

i pacchetti come "libtinfo6: i386" non vengono rimossi

Sto usando Ubuntu 20.04 e Nvidia-driver-440 per cui devi rimuovere tutti i pacchetti mostrati sotto l'immagine

Elenco di tutti i pacchetti che devono essere rimossi:

img

come mostrato nell'immagine, assicurarsi che il pacchetto che si sta installando abbia la dimensione corretta di 207 Mb per Nvidia-driver-440, se inferiore significa che non sono stati rimossi tutti i pacchetti.



0

Per completezza, ho riscontrato anche questo problema. Nel mio caso si è scoperto che, poiché avevo impostato Clang come compilatore predefinito (utilizzo update-alternatives), nvidia-driver-440non è stato possibile compilare (controllare /var/crash/) anche se aptnon è stato pubblicato alcun avviso. Per me, la soluzione era apt purge nvidia-*: cctornare a utilizzare gcc, riavviare e reinstallare nvidia-driver-440.


-1

Ho inserito il contenitore in un'immagine finestra mobile. Quindi ho ricreato un altro contenitore usando questa finestra mobile e il problema era scomparso.


-1

Queste risposte non hanno funzionato per me:

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.

Disinstallare il vecchio driver 418.67e installare il nuovo driver 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

riavvio. Se il problema persiste:

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

per cent / rhel

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

poi

reboot

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.