Ketidakcocokan versi NVIDIA NVML Driver / perpustakaan


229

Ketika saya menjalankan nvidia-smisaya mendapatkan pesan berikut:

Failed to initialize NVML: Driver/library version mismatch

Satu jam yang lalu saya menerima pesan yang sama dan menghapus pustaka cuda saya dan saya dapat menjalankannya nvidia-smi, mendapatkan hasil sebagai berikut:

nvidia-smi-result

Setelah ini saya mengunduh cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debdari halaman resmi NVIDIA dan kemudian cukup:

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

Sekarang saya telah menginstal cuda, tapi saya mendapatkan kesalahan mismatch yang disebutkan.


Beberapa informasi yang berpotensi bermanfaat:

Menjalankan cat /proc/driver/nvidia/versionsaya mendapatkan:

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)

Saya menjalankan Ubuntu 16.04.2 LTS.

Rilis kernel adalah: 4.4.0-66-generik.

Terima kasih!


12
Anda mungkin telah menggabungkan instalasi runfile sebelumnya dengan instalasi manajer paket Anda (saat ini) (apt-get). Ikuti instruksi dalam panduan instalasi cuda linux untuk menghapus semua driver NVIDIA dan file CUDA sebelumnya, dan kemudian instal ulang setelah Anda membersihkannya. Sebelum memulai instal ulang, Anda mungkin ingin membaca seluruh panduan instalasi linux yang saya tautkan. Konflik hampir pasti muncul dari upaya Anda untuk menginstal paket CUDA 8 GA2 di atas instalasi driver 378.13 Anda yang ada.
Robert Crovella

Saya memberikan suara untuk menutup pertanyaan ini karena pada dasarnya pertanyaan tentang menginstal (atau memutus instalasi) driver GPU dan tidak terkait langsung dengan pemrograman.
Talonmies

Jawaban:


338

Kejutan mengejutkan, mem-boot ulang menyelesaikan masalah (saya pikir saya sudah mencobanya).

Solusi Robert Crovella yang disebutkan dalam komentar mungkin juga bermanfaat bagi orang lain, karena ini sangat mirip dengan apa yang saya lakukan untuk menyelesaikan masalah saat pertama kali saya mengalaminya.


2
tolong ingat untuk kembali dalam beberapa hari dan menerima jawaban ini sehingga pertanyaan ini jatuh dari daftar tidak terjawab untuk tag CUDA
talonmies

5
Saya skeptis tentang ini bekerja setelah reboot, tapi tetap saja saya mencobanya, dan ITU BEKERJA !! Terima kasih!
Abhishek Potnis

8
@AbhishekPotnis Jika Anda bertanya-tanya mengapa reboot berfungsi, mungkin karena ini: memeriksa /var/log/apt/history.logUbuntu mengungkapkan bahwa sistem telah secara otomatis memperbarui libcuda, yang mungkin memerlukan restart untuk terus berfungsi dengan benar. Sejak itu saya menonaktifkan pembaruan itu dengan harapan saya tidak akan melihatnya lagi.
John

1
Sayangnya ini bukan solusi permanen. Masalahnya mungkin muncul kembali. Solusinya adalah menginstal versi yang lebih baru dari paket nvidia ( nvidia-390). Lihat jawaban saya di bawah ini
Stefan Horning

1
Ini juga bekerja untuk saya. Beberapa instruksi termasuk sudo reboot nowdan yang lainnya tidak.
rjurney

232

Seperti yang dikatakan @etal, me-reboot bisa menyelesaikan masalah ini, tapi saya pikir prosedur tanpa me-reboot akan membantu.

Untuk bahasa Cina, periksa blog saya -> 中文 版

Pesan kesalahan

NVML: Driver / pustaka versi ketidakcocokan

beri tahu kami modul kernel driver Nvidia (kmod) memiliki versi yang salah, jadi kami harus menurunkan driver ini, dan kemudian memuat versi kmod yang benar

Bagaimana cara melakukannya ?

Pertama, kita harus tahu driver mana yang dimuat.

lsmod | grep nvidia

Anda mungkin mendapatkan

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

tujuan akhir kami adalah untuk membongkar nvidiamod, jadi kita harus membongkar modul tergantungnvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

lalu, bongkar nvidia

sudo rmmod nvidia

Penyelesaian masalah

jika Anda mendapatkan error like rmmod: ERROR: Module nvidia is in use, yang mengindikasikan bahwa modul kernel sedang digunakan, Anda harus mematikan proses yang menggunakan kmod:

sudo lsof / dev / nvidia *

dan kemudian bunuh proses itu, kemudian lanjutkan membongkar kmods

Uji

konfirmasi Anda berhasil menurunkan kmods tersebut

lsmod | grep nvidia

Anda seharusnya tidak mendapatkan apa-apa, kemudian mengonfirmasi bahwa Anda dapat memuat driver yang benar

nvidia-smi

Anda harus mendapatkan hasil yang benar


3
@ Suraj itu tidak hanya terhubung. jawabannya ditulis dengan baik. satu-satunya masalah adalah dia tidak mengungkapkan afiliasinya dan Anda melakukannya.
Sagar V

2
@ KiralyCraft Yang salah tidak lagi ada pada disk, tetapi masih ada dalam memori. nvidia-smi baru saja memicu prosedur memuat baru saya pikir.
Comzyh

1
Cemerlang! Tidak tahu ini yang menyebabkan masalah. Jadi me-reboot melakukan hal yang sama?
Alys

1
@ alys Jelas, reboot akan membongkar dan memuat kembali semua modul.
Comzyh

1
bekerja tetapi me-reboot membawa masalah kembali .. dan resolusi saya tidak benar juga. Ini bukan instalasi yang bersih sama sekali ..
Kevin He

14

Jadi saya mengalami masalah ini, tidak ada solusi lain yang bekerja. Pesan kesalahan itu buram, tetapi memeriksa dmesg adalah kunci:

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

Namun saya telah sepenuhnya menghapus versi 384, dan menghapus driver kernel yang tersisa nvidia-384*. Tetapi bahkan setelah reboot, saya masih mendapatkan ini. Melihat ini berarti bahwa kernel masih dikompilasi ke referensi 384, tetapi hanya menemukan 410. Jadi saya mengkompilasi ulang kernel saya:

# 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

Dan kemudian berhasil.

Setelah menghapus 384, saya masih memiliki 384 file di: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/ kernel / driver

Saya merekomendasikan menggunakan locateperintah (tidak diinstal secara default) daripada mencari sistem file setiap waktu.


Terima kasih banyak! Ini ide yang bagus untuk digunakan locate nvidia-smi. Saya menggunakan perintah mencari tahu bahwa driver lain diinstal.
hao

sudo update-initramfs -c -k uname -rTidak membantu saya.
mrgloom

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

Saya mendapatkan kesalahan failed to initialize NVML: Driver/Library version mismatchdari nvidia-gpu-temperature-indicator saya. Dan nvidia-smi gagal mencetak info apa pun. Saya mencoba mencari apakah ada versi lain dari driver nvidia yang diinstal di ubuntu saya. Tapi saya baru saja menemukan nvidia-driver-390. Pada akhirnya, rebootmembantu saya memecahkan masalah.


9

2 jawaban teratas tidak dapat menyelesaikan masalah saya. Saya menemukan solusi di forum resmi Nvidia memecahkan masalah saya. Info kesalahan di bawah ini dapat menyebabkan dengan menginstal dua versi driver yang berbeda dengan pendekatan yang berbeda. Misalnya, instal driver Nvidia oleh apt dan instal resmi.

Gagal menginisialisasi NVML: Versi ketidakcocokan driver / pustaka

Untuk mengatasi masalah ini, hanya perlu menjalankan salah satu dari dua perintah berikut.

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

bash: / usr / bin / nvidia-uninstall: Tidak ada file atau direktori seperti itu
Stepan Yakovenko

Berhasil. Terkadang file uninstall tidak ada.
Qinsheng Zhang

5

Ini juga terjadi pada saya di Ubuntu 16.04 menggunakan nvidia-348paket (versi nvidia terbaru pada Ubuntu 16.04).

Namun saya bisa menyelesaikan masalah dengan menginstal nvidia-390melalui PPA Drivers GPU Proprietary .

Jadi solusi untuk masalah yang dijelaskan di Ubuntu 16.04 adalah melakukan ini:

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

Catatan: Panduan ini mengasumsikan instalasi Ubuntu bersih. Jika Anda sudah menginstal driver sebelumnya, boot reboot mungkin diperlukan untuk memuat ulang semua modul kernel.


1
Ini dan restart melakukannya untuk saya!
SaiBot

1

Punya masalah juga. (Saya menjalankan ubuntu 18.04)

Apa yang saya lakukan:

dpkg -l | grep -i nvidia

Kemudian sudo apt-get remove --purge nvidia-381(dan setiap versi duplikat, dalam kasus saya, saya memiliki 381, 384 dan 387)

Kemudian sudo ubuntu-drivers devicesuntuk mendaftar apa yang tersedia

Dan saya memilih sudo apt install nvidia-driver-430

Setelah itu, nvidia-smiberikan output yang benar (tidak perlu reboot). Tapi saya kira Anda bisa reboot jika ragu.

Saya juga mengikuti instalasi ini untuk menginstal ulang cuda + cudnn.


Saya tidak tahu mengapa ini ditandai (-1). Saya menambahkannya ke 0. Perintah "dpkg -l | grep -i nvidia" valid dan menunjukkan apa yang tidak dihapus.
gerardg

1

Saya mengalami masalah ini setelah pembaruan kernel normal pada mesin CentOS. Karena semua driver dan perpustakaan CUDA dan nVidia telah diinstal melalui repositori YUM, saya berhasil menyelesaikan masalah menggunakan langkah-langkah berikut:

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

Itu memastikan kernel dan driver nVidia saya konsisten. Saya rasa hanya me-reboot bisa mengakibatkan versi modul kernel salah dimuat.


Bekerja seperti pesona!
Maks.

1

Saya harus me-restart kernel dan menghapus semua paket yang telah saya instal sebelumnya (selama instalasi pertama), pastikan untuk menghapus semua paket, bahkan setelah menghapus paket dengan perintah di bawah ini

sudo apt-get --purge hapus " nvidia "

paket-paket seperti "libtinfo6: i386" tidak bisa dihapus

Saya menggunakan Ubuntu 20.04 dan Nvidia-driver-440 untuk itu Anda harus menghapus semua paket yang ditunjukkan di bawah gambar

Daftar semua paket yang perlu dihapus:

img

seperti yang ditunjukkan pada gambar, pastikan bahwa paket yang Anda instal memiliki ukuran yang benar yaitu 207 Mb untuk Nvidia-driver-440, jika kurang berarti Anda belum menghapus semua paket.



0

Untuk kelengkapan, saya mengalami masalah ini juga. Dalam kasus saya ternyata karena saya telah menetapkan Dentang sebagai kompiler default saya (menggunakan update-alternatives), nvidia-driver-440gagal mengkompilasi (memeriksa /var/crash/) meskipun apttidak memposting peringatan. Bagi saya, solusinya adalah apt purge nvidia-*, cckembali menggunakan gcc, reboot, dan instal ulang nvidia-driver-440.


-1

Saya menempatkan wadah itu menjadi gambar buruh pelabuhan. Lalu saya membuat ulang wadah lain menggunakan gambar buruh pelabuhan ini dan masalahnya hilang.


-1

Jawaban ini tidak berhasil untuk saya:

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.

Copot driver lama 418.67dan instal driver baru 430.26(unduh 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

reboot Jika masalah masih ada:

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

untuk sen / rhel

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

kemudian

reboot

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.