NVIDIA NVML Sürücü / kütüphane sürümü uyumsuzluğu


233

Çalıştırdığımda nvidia-smişu mesajı alıyorum:

Failed to initialize NVML: Driver/library version mismatch

Bir saat önce aynı mesajı aldım ve cuda kütüphanemi kaldırdım nvidia-smive aşağıdaki sonucu alarak çalışabildim :

nvidia-smi-sonuç

Bundan sonra indirdim cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb gelen resmi NVIDIA sayfasında sadece o ve:

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

Şimdi cuda yükledim, ancak belirtilen uyumsuzluk hatasını alıyorum.


Potansiyel olarak faydalı bazı bilgiler:

Koşu cat /proc/driver/nvidia/version olsun:

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)

Ubuntu 16.04.2 LTS kullanıyorum.

Çekirdek sürümü: 4.4.0-66-jenerik.

Teşekkürler!


12
Muhtemelen önceki bir runfile yüklemesini (mevcut) paket yöneticisi yüklemenizle (apt-get) karıştırdınız. Önceki tüm NVIDIA sürücüsünü ve CUDA dosyalarını kaldırmak için cuda linux kurulum kılavuzundaki talimatları izleyin ve temizledikten sonra yeniden yükleyin. Yeniden yüklemenize başlamadan önce, bağladığım linux kurulum kılavuzunun tamamını okumak isteyebilirsiniz. Çatışma neredeyse kesinlikle CUDA 8 GA2 paketini mevcut 378.13 sürücü yüklemenizin üzerine yükleme girişiminizden kaynaklanıyor.
Robert Crovella

Bu soruyu kapatmak için oy kullanıyorum, çünkü temel olarak GPU sürücülerinin yüklenmesi (veya kurulumunun kesilmesi) ve doğrudan programlama ile ilgili olmayan bir soru.
talonmies

Yanıtlar:


344

Sürpriz sürpriz, yeniden başlatma sorunu çözdü (bunu zaten denediğimi sanıyordum).

Robert Crovella'nın yorumlarda bahsettiği çözüm başka biri için de yararlı olabilir, çünkü ilk kez sorunu çözmek için yaptığımla oldukça benzer.


2
lütfen birkaç gün içinde geri dönmeyi ve bu yanıtı kabul etmeyi unutmayın, bu nedenle bu soru CUDA etiketi için cevaplanmamış listeden düşüyor
talonmies

5
Ben bir yeniden başlatmadan sonra bu çalışma hakkında şüpheci, ama yine de bir deneyin verdi ve o çalıştı! Teşekkürler!
Abhishek Potnis

8
@AbhishekPotnis Yeniden başlatmanın neden çalıştığını merak ediyorsanız, bunun nedeni olabilir: /var/log/apt/history.logUbuntu üzerinde kontrol yapılması, sistemin düzgün çalışmaya devam etmesi için muhtemelen yeniden başlatılması gereken libcuda'yı otomatik olarak güncellediğini ortaya çıkardı. O zamandan beri tekrar görmeyeceğim umuduyla bu güncellemeleri devre dışı bıraktım.
John

1
Ne yazık ki bu kalıcı bir çözüm değil. Sorun yeniden ortaya çıkabilir. Çözüm, nvidia paketinin ( nvidia-390) daha yeni bir sürümünü yüklemektir . Aşağıdaki cevabımı gör
Stefan Horning

1
Bu da benim için çalıştı. Bazı talimatlar içerir sudo reboot now, bazıları içermez .
rjurney

234

@Etal'ın dediği gibi, yeniden başlatma bu sorunu çözebilir, ancak yeniden başlatmadan bir prosedürün yardımcı olacağını düşünüyorum.

Çince için blogumu kontrol et -> 中文 版

Hata mesajı

NVML: Sürücü / kütüphane sürümü uyumsuzluğu

Nvidia sürücü çekirdeği modülünün (kmod) yanlış bir sürüme sahip olduğunu söyleyin, bu yüzden bu sürücüyü kaldırmalı ve sonra doğru kmod sürümünü yüklemeliyiz

Bu nasıl yapılır ?

İlk olarak, hangi sürücülerin yüklü olduğunu bilmeliyiz.

lsmod | grep nvidia

alabilirsin

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

son hedefimiz nvidiamodu boşaltmaktır , bu yüzden modülü bağlı olaraknvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

sonra boşalt nvidia

sudo rmmod nvidia

Sorun giderme

rmmod: ERROR: Module nvidia is in useçekirdek modülünün kullanımda olduğunu belirten bir hata alırsanız, kmod kullanarak işlemi sonlandırmalısınız:

sudo lsof / dev / nvidia *

ve sonra bu süreci öldür, sonra kmodları boşaltmaya devam et

Ölçek

o kmodları başarıyla boşalttığınızı onaylayın

lsmod | grep nvidia

hiçbir şey almamalısınız, sonra doğru sürücüyü yükleyebileceğinizi onaylayın

nvidia-smi

doğru çıktıyı almalısın


3
@suraj sadece bağlantılı değil. cevap iyi yazılmış. tek mesele onun ilişkisini açıklamamış ve siz yapmışsınızdır.
Sagar V

2
@KiralyCraft Yanlış olan diskte değil, hala bellekte. nvidia-smi sadece yeni bir yükleme prosedürü tetiklemek düşünüyorum.
Comzyh

1
Parlak! Soruna neden olanın bu olduğu hakkında hiçbir fikrim yoktu. Öyleyse yeniden başlatma aynı şeyi yapıyor mu?
alys

1
@alys Açıkçası, yeniden başlatma tüm modülü kaldırır ve sonra yeniden yükler.
Comzyh

1
çalıştı ama yeniden başlatma sorunu geri getiriyor .. ve benim çözümüm de doğru değil. Temiz bir kurulum değil ..
Kevin He

14

Bu sorunu yaşıyordum, diğer ilaçların hiçbiri işe yaramadı. Hata mesajı opaktı, ancak dmesg kontrolü önemliydi:

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

Ancak 384 sürümünü tamamen kaldırmış ve kalan çekirdek sürücülerini kaldırmıştım nvidia-384*. Ama yeniden başlattıktan sonra bile, hala bunu alıyordum. Bunu görmek, çekirdeğin hala 384 referansına derlendiği anlamına geliyordu, ancak sadece 410'u buluyordu. Bu yüzden çekirdeğimi yeniden derledim:

# 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

Ve sonra işe yaradı.

384'ü kaldırdıktan sonra, içinde hala 384 dosya vardı: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/ çekirdek / sürücüler

locateDosya sistemini her seferinde aramak yerine komutu (varsayılan olarak yüklenmez) kullanmanızı öneririm .


Çok teşekkürler! Kullanmak iyi bir fikir locate nvidia-smi. Başka bir sürücünün yüklendiğini bulmak için komutu kullandım.
hao

sudo update-initramfs -c -k uname -rBana yardımcı olmadı .
09:09

dmesgçıktı: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

Hatayı failed to initialize NVML: Driver/Library version mismatchnvidia-gpu-sıcaklık-göstergemden aldım . Ve nvidia-smi herhangi bir bilgi yazdıramadı. Benim ubuntu yüklü nvidia sürücüsünün başka sürümleri olup olmadığını bulmaya çalıştım. Ama nvidia-driver-390'ı buldum. Sonunda, rebootsorunu çözmeme yardımcı oldu.


9

İlk 2 cevap sorunumu çözemez. Nvidia resmi forumunda bir çözüm buldum sorunumu çözdü. Aşağıdaki hata bilgileri, sürücünün iki farklı sürümünü farklı yaklaşımlarla yükleyerek neden olabilir. Örneğin, Nvidia sürücüsünü apt ve resmi yükleyici tarafından yükleyin.

NVML başlatılamadı: Sürücü / kütüphane sürümü uyumsuzluğu

Bu sorunu çözmek için, yalnızca aşağıdaki iki komuttan birini yürütmeniz gerekir.

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

bash: / usr / bin / nvidia-uninstall: Böyle bir dosya veya dizin yok
Stepan Yakovenko

İşe yarıyor. Bazen kaldırma dosyası bulunmayabilir.
Qinsheng Zhang

5

Bu da nvidia-348paketi kullanarak Ubuntu 16.04'te oldu (Ubuntu 16.04'teki en son nvidia sürümü).

Ancak nvidia-390, Özel GPU Sürücüleri PPA aracılığıyla yükleyerek sorunu çözebilirim .

Yani Ubuntu 16.04'te açıklanan soruna bir çözüm bunu yapıyor:

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

Not: Bu kılavuz temiz bir Ubuntu yüklemesi olduğunu varsaymaktadır. Önceden yüklü sürücüler varsa, tüm çekirdek modüllerini yeniden yüklemek için yeniden başlatma gerekebilir.


1
Bu ve bir yeniden başlatma benim için yaptı!
SaiBot

1

Sorun da vardı. (Ubuntu 18.04 kullanıyorum)

Ben ne yaptım:

dpkg -l | grep -i nvidia

Sonra sudo apt-get remove --purge nvidia-381 (ve her yinelenen versiyonda, benim durumumda 381, 384 ve 387 vardı)

Sonra sudo ubuntu-drivers devices mevcut olanları listelemek

Ve ben seçiyorum sudo apt install nvidia-driver-430

Daha sonra, nvidia-smi , doğru çıktı verdi (yeniden başlatmaya gerek yok). Ama sanırım şüphe duyduğunuzda yeniden başlatabilirsiniz.

Cuda + cudnn'ı yeniden yüklemek için de bu kurulumu izledim.


Bunun neden işaretlendiğini bilmiyorum (-1). Bunu 0'a arttırdım. "Dpkg -l | grep -i nvidia" komutu geçerlidir ve silinmeyenleri gösterir.
gerardg

1

Bu sorunu bir CentOS makinesinde normal bir çekirdek güncellemesinden sonra yaşadım. Tüm CUDA ve nVidia sürücüleri ve kütüphaneleri YUM depoları aracılığıyla kurulduğundan, aşağıdaki adımları kullanarak sorunları çözmeyi başardım:

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

Çekirdek ve nVidia sürücümün tutarlı olmasını sağladı. Sadece yeniden başlatmanın çekirdek modülünün yanlış sürümünün yüklenmesine neden olabileceğini düşünüyorum.


Bir cazibe gibi çalıştı!
max

1

Çekirdeklerimi yeniden başlatmam ve daha önce yüklediğim tüm paketleri kaldırmam gerekiyor (ilk kurulum sırasında), lütfen aşağıdaki komutla paketleri kaldırdıktan sonra bile tüm paketleri sildiğinizden emin olun.

sudo apt-get - purge kaldır " nvidia "

"libtinfo6: i386" gibi paketler kaldırılmaz

Aşağıdaki resimde gösterilen tüm paketleri kaldırmanız gerektiğinden Ubuntu 20.04 ve Nvidia-driver-440 kullanıyorum

Kaldırılması gereken tüm paketlerin listesi:

img

resimde gösterildiği gibi, yüklediğiniz paketin Nvidia-driver-440 için 207 Mb olan doğru boyutta olduğundan emin olun, eğer daha azsa tüm paketleri kaldırmamış olmanız anlamına gelir.



0

Bütünlük için ben de bu konuya girdim. Benim durumumda, Clang'ı varsayılan derleyici (kullanarak update-alternatives) olarak ayarladığım için , herhangi bir uyarı göndermese bile nvidia-driver-440derleyemedi (kontrol edemedi /var/crash/) apt. Benim için çözüm oldu apt purge nvidia-*, ayarlanan cckullanım geri gcc, yeniden başlatma ve yeniden yükleme nvidia-driver-440.


-1

Konteyneri bir docker görüntüsüne adadım. Sonra bu docker görüntüsünü kullanarak başka bir kapsayıcı yeniden oluşturun ve sorun gitti.


-1

Bu cevaplar benim için işe yaramadı:

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.

Eski sürücüyü kaldırın 418.67ve yeni bir sürücü yükleyin 430.26(indirin 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. Sorun hala devam ediyorsa:

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

cent / rhel için

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

sonra

reboot

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.