NVIDIA NVML Driver / รุ่นไลบรารีไม่ตรงกัน


233

เมื่อฉันเรียกใช้nvidia-smiฉันได้รับข้อความต่อไปนี้:

Failed to initialize NVML: Driver/library version mismatch

หนึ่งชั่วโมงที่ผ่านมาฉันได้รับข้อความเดียวกันและถอนการติดตั้งไลบรารี cuda ของฉันและฉันสามารถเรียกใช้nvidia-smiโดยรับผลลัพธ์ต่อไปนี้:

nvidia-SMI ผล

หลังจากนี้ฉันดาวน์โหลดcuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debจากหน้า NVIDIA อย่างเป็นทางการแล้วเพียง:

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

ตอนนี้ฉันติดตั้ง cuda แล้ว แต่ฉันพบข้อผิดพลาดที่ไม่ตรงกัน


ข้อมูลที่อาจเป็นประโยชน์:

เล่นcat /proc/driver/nvidia/versionผมจะได้รับ:

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

เคอร์เนลรีลีสคือ: 4.4.0-66-generic

ขอบคุณ!


12
คุณอาจผสมการติดตั้ง runfile ก่อนหน้ากับการติดตั้งตัวจัดการแพคเกจ (ปัจจุบัน) (apt-get) ทำตามคำแนะนำในคู่มือการติดตั้ง cuda linuxเพื่อลบไดรเวอร์ NVIDIA และไฟล์ CUDA ก่อนหน้านี้ทั้งหมดแล้วติดตั้งใหม่หลังจากที่คุณทำความสะอาดแล้ว ก่อนเริ่มการติดตั้งใหม่คุณอาจต้องการอ่านคู่มือการติดตั้ง linux ทั้งหมดที่ฉันเชื่อมโยง ความขัดแย้งเกิดขึ้นจากการที่คุณพยายามติดตั้งแพ็คเกจ CUDA 8 GA2 ที่ด้านบนสุดของการติดตั้งไดรเวอร์ 378.13 ที่คุณมีอยู่
Robert Crovella

ฉันลงคะแนนให้ปิดคำถามนี้เนื่องจากเป็นคำถามเกี่ยวกับการติดตั้ง (หรือการติดตั้ง) GPU ไดรเวอร์และไม่เกี่ยวข้องกับการเขียนโปรแกรมโดยตรง
talonmies

คำตอบ:


344

เซอร์ไพร์สประหลาดใจการรีบูตเครื่องแก้ไขปัญหาได้ (ฉันคิดว่าฉันได้ลองไปแล้ว)

วิธีแก้ปัญหาของ Robert Crovella ที่กล่าวถึงในความเห็นอาจเป็นประโยชน์กับคนอื่นเนื่องจากมันค่อนข้างคล้ายกับสิ่งที่ฉันทำเพื่อแก้ไขปัญหาในครั้งแรกที่ฉันมี


2
โปรดจำไว้ว่าให้กลับมาใหม่ในอีกสองสามวันและยอมรับคำตอบนี้ดังนั้นคำถามนี้จึงตกอยู่ในรายชื่อที่ไม่ได้รับสำหรับแท็ก CUDA
talonmies

5
ฉันสงสัยเกี่ยวกับการทำงานนี้หลังจากรีบูตเครื่อง แต่ถึงกระนั้นฉันก็ลองแล้วก็ใช้งานได้ !! ขอบคุณ!
Abhishek Potnis

8
@AbhishekPotnis หากคุณสงสัยว่าทำไมการรีบูทถึงอาจเป็นเพราะสิ่งนี้: การตรวจสอบ/var/log/apt/history.logบน Ubuntu พบว่าระบบมีการอัพเดต libcuda โดยอัตโนมัติซึ่งจำเป็นต้องมีการรีสตาร์ทเพื่อให้ทำงานได้อย่างถูกต้อง ฉันได้ปิดใช้งานการอัปเดตเหล่านั้นด้วยความหวังว่าฉันจะไม่เห็นมันอีก
จอห์น

1
น่าเสียดายที่นี่ไม่ใช่ทางออกที่ถาวร ปัญหาอาจปรากฏขึ้นอีกครั้ง วิธีแก้ไขคือติดตั้งแพ็คเกจ nvidia ( nvidia-390) รุ่นใหม่กว่า ดูคำตอบของฉันด้านล่าง
Stefan Horning

1
มันก็ใช้ได้กับฉันเช่นกัน คำแนะนำบางอย่างรวมถึงคำแนะนำsudo reboot nowอื่น ๆ
rjurney

234

ดังที่ @etal กล่าวว่าการรีบูตเครื่องสามารถแก้ปัญหานี้ได้ แต่ฉันคิดว่ากระบวนการที่ไม่มีการรีบูตจะช่วย

สำหรับภาษาจีนตรวจสอบบล็อกของฉัน -> 中文版

ข้อความแสดงข้อผิดพลาด

NVML: เวอร์ชันไดรเวอร์ / ไลบรารีไม่ตรงกัน

บอกเราว่าโมดูลเคอร์เนลไดรเวอร์ของ Nvidia (kmod) มีรุ่นที่ไม่ถูกต้องดังนั้นเราควรยกเลิกการโหลดไดรเวอร์นี้แล้วโหลดรุ่นที่ถูกต้องของ kmod

ทำอย่างไร

อันดับแรกเราควรรู้ว่ามีไดรเวอร์ใดบ้างที่ถูกโหลด

lsmod | grep nvidia

คุณอาจได้รับ

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

เป้าหมายสุดท้ายของเราคือการยกเลิกการโหลดnvidiamod ดังนั้นเราควรยกเลิกการโหลดโมดูลขึ้นอยู่กับnvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

จากนั้นให้ยกเลิกการโหลด nvidia

sudo rmmod nvidia

การแก้ไขปัญหา

หากคุณได้รับข้อผิดพลาดเช่นrmmod: ERROR: Module nvidia is in useซึ่งระบุว่าโมดูลเคอร์เนลมีการใช้งานคุณควรจะฆ่ากระบวนการที่ใช้ kmod:

sudo lsof / dev / nvidia *

และฆ่ากระบวนการเหล่านั้นจากนั้นทำการโหลด kmods ต่อไป

ทดสอบ

ยืนยันว่าคุณยกเลิกการโหลด kmods เหล่านั้นสำเร็จแล้ว

lsmod | grep nvidia

คุณไม่ควรรับอะไรเลยจากนั้นยืนยันว่าคุณสามารถโหลดไดรเวอร์ที่ถูกต้อง

nvidia-SMI

คุณควรได้ผลลัพธ์ที่ถูกต้อง


3
@suraj มันไม่ได้เชื่อมโยงกัน คำตอบเขียนได้ดี ปัญหาเดียวก็คือเขาไม่ได้เปิดเผยความร่วมมือของเขาและคุณทำมัน
ซาก้าวี

2
@KiralyCraft ผิดพลาดไม่มีอยู่ในดิสก์อีกต่อไป แต่ยังอยู่ในหน่วยความจำ nvidia-smi เพิ่งเปิดใช้งานขั้นตอนการโหลดใหม่ที่ฉันคิด
Comzyh

1
ยอดเยี่ยม! ไม่มีความคิดนี่คือสิ่งที่ทำให้เกิดปัญหา ดังนั้นการรีบูตเครื่องก็เหมือนกันหรือ
Alys

1
@alys เห็นได้ชัดว่าการรีบูตเครื่องจะยกเลิกการโหลดและโหลดโมดูลทั้งหมดอีกครั้ง
Comzyh

1
ใช้งานได้ แต่การรีบูตเครื่องทำให้ปัญหากลับมา .. และความละเอียดของฉันก็ไม่ถูกต้องเช่นกัน มันไม่ใช่การติดตั้งที่สะอาดเลย ..
Kevin เขา

14

ดังนั้นฉันจึงมีปัญหานี้ไม่มีวิธีแก้ไขอื่น ๆ ข้อความแสดงข้อผิดพลาดทึบแสง แต่การตรวจสอบ dmesg เป็นกุญแจ:

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

อย่างไรก็ตามฉันลบรุ่น 384 ออกอย่างสมบูรณ์และลบไดรเวอร์เคอร์เนลที่เหลืออยู่nvidia-384*ออก แต่แม้หลังจากรีบูตฉันก็ยังได้รับนี้ การเห็นสิ่งนี้หมายความว่าเคอร์เนลยังคงถูกรวบรวมเพื่ออ้างอิง 384 แต่พบ 410 เท่านั้นดังนั้นฉันจึงคอมไพล์เคอร์เนลใหม่:

# 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

แล้วมันก็ใช้งานได้

หลังจากลบ 384 ฉันยังมีไฟล์อีก 384 ไฟล์ใน: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module/lib/modules/4.13.0-43-generic/ เคอร์เนล / ไดรเวอร์

ฉันขอแนะนำให้ใช้locateคำสั่ง (ไม่ได้ติดตั้งโดยค่าเริ่มต้น) แทนที่จะค้นหาระบบไฟล์ทุกครั้ง


ขอบคุณมาก! locate nvidia-smiมันเป็นความคิดที่ดีที่จะใช้ ฉันใช้คำสั่งเพื่อหาว่ามีการติดตั้งไดรเวอร์อื่น
hao

sudo update-initramfs -c -k uname -rไม่ช่วยฉัน
mrgloom

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

9

ฉันได้รับข้อผิดพลาดfailed to initialize NVML: Driver/Library version mismatchจากตัวบ่งชี้ nvidia-gpu- อุณหภูมิ และ nvidia-smi ไม่สามารถพิมพ์ข้อมูลใด ๆ ได้ ฉันพยายามค้นหาว่ามีไดรเวอร์ nvidia รุ่นอื่นติดตั้งอยู่ใน Ubuntu ของฉันหรือไม่ แต่ฉันเพิ่งพบ nvidia-driver-390 ในท้ายที่สุดrebootช่วยฉันแก้ปัญหา


9

คำตอบยอดนิยม 2 ไม่สามารถแก้ปัญหาของฉัน ฉันพบวิธีแก้ปัญหาที่ฟอรัมทางการของ Nvidia แก้ปัญหาของฉันแล้ว ข้อมูลข้อผิดพลาดด้านล่างอาจเกิดจากการติดตั้งไดรเวอร์รุ่นต่าง ๆ สองวิธีด้วยวิธีการที่แตกต่างกัน ตัวอย่างเช่นติดตั้งไดรเวอร์ Nvidia โดย apt และ installer อย่างเป็นทางการ

ไม่สามารถเริ่มต้น NVML ได้: เวอร์ชันไดรเวอร์ / ไลบรารีไม่ตรงกัน

ในการแก้ปัญหานี้จะต้องดำเนินการหนึ่งในสองคำสั่งต่อไปนี้

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

bash: / usr / bin / nvidia ถอนการติดตั้ง: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Stepan Yakovenko

มันได้ผล. บางครั้งไฟล์ถอนการติดตั้งไม่มีอยู่
Qinsheng Zhang

5

สิ่งนี้เกิดขึ้นกับฉันบน Ubuntu 16.04 โดยใช้nvidia-348แพ็คเกจ (เวอร์ชัน nvidia ล่าสุดบน Ubuntu 16.04)

แต่ฉันไม่สามารถแก้ไขปัญหาได้โดยการติดตั้งnvidia-390ผ่านไดรเวอร์ GPU กรรมสิทธิ์ PPA

ดังนั้นวิธีแก้ไขปัญหาที่อธิบายไว้ใน Ubuntu 16.04 จึงเป็นเช่นนี้:

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

หมายเหตุ:คำแนะนำนี้ถือว่าเป็นการติดตั้ง Ubuntu ที่สะอาด หากคุณมีไดรเวอร์ก่อนหน้านี้ติดตั้งจำเป็นต้องรีบูตเครื่องเพื่อโหลดโมดูลเคอร์เนลทั้งหมด


1
สิ่งนี้และการรีสตาร์ททำเพื่อฉัน!
SaiBot

1

มีปัญหาเกินไป (ฉันใช้ Ubuntu 18.04)

ฉันทำอะไรลงไป:

dpkg -l | grep -i nvidia

จากนั้น sudo apt-get remove --purge nvidia-381(และทุกรุ่นที่ซ้ำกันในกรณีของฉันฉันมี 381, 384 และ 387)

จากนั้นsudo ubuntu-drivers devicesแสดงรายการสิ่งที่มีอยู่

และฉันเลือก sudo apt install nvidia-driver-430

หลังจากนั้นnvidia-smiให้ผลลัพธ์ที่ถูกต้อง (ไม่จำเป็นต้องรีบูต) แต่ฉันคิดว่าคุณสามารถรีบูตเมื่อมีข้อสงสัย

ฉันได้ติดตามการติดตั้งนี้เพื่อติดตั้ง cuda + cudnn อีกครั้ง


ฉันไม่รู้ว่าทำไมสิ่งนี้จึงถูกทำเครื่องหมายลง (-1) ฉันเพิ่มมันเป็น 0 คำสั่ง "dpkg -l | grep -i nvidia" ถูกต้องและแสดงสิ่งที่ไม่ถูกลบ
gerardg

1

ฉันประสบปัญหานี้หลังจากการอัพเดทเคอร์เนลปกติบนเครื่อง CentOS เนื่องจากไดรเวอร์และไลบรารี CUDA และ nVidia ทั้งหมดได้รับการติดตั้งผ่านที่เก็บ YUM ฉันจึงจัดการแก้ไขปัญหาโดยใช้ขั้นตอนต่อไปนี้:

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

ทำให้แน่ใจว่าเคอร์เนลและไดรเวอร์ nVidia ของฉันสอดคล้องกัน ฉันคิดว่าการรีบูตเครื่องอาจทำให้โมดูลเคอร์เนลที่โหลดผิดรุ่น


ทำงานเหมือนจับใจ!
สูงสุด

1

ฉันต้องรีสตาร์ทเมล็ดของฉันและลบแพ็กเกจทั้งหมดที่ฉันติดตั้งไว้ก่อนหน้านี้ (ในระหว่างการติดตั้งครั้งแรก) โปรดตรวจสอบให้แน่ใจว่าได้ลบแพ็คเกจทั้งหมดแม้หลังจากลบแพ็คเกจด้วยคำสั่งด้านล่าง

sudo apt-get --purge ลบ " nvidia "

แพ็คเกจเช่น "libtinfo6: i386" จะไม่ถูกลบออก

ฉันใช้ Ubuntu 20.04 และ Nvidia-driver-440 เพื่อที่คุณจะต้องลบแพ็คเกจทั้งหมดที่แสดงด้านล่างภาพ

รายการแพ็คเกจทั้งหมดที่ต้องลบ:

img

ดังที่แสดงในภาพตรวจสอบให้แน่ใจว่าแพคเกจที่คุณติดตั้งนั้นมีขนาดที่ถูกต้องคือ 207 Mb สำหรับ Nvidia-driver-440 ถ้าน้อยกว่านั่นหมายความว่าคุณยังไม่ได้ลบแพ็คเกจทั้งหมด


0

ฉันติดตั้งไดรเวอร์ nvidia แล้ว: เรียกใช้คำสั่งเหล่านี้ในrootโหมด:

  1. systemctl isolate multi-user.target

  2. modprobe -r nvidia-drm

  3. ติดตั้งไดรเวอร์ Nvidia อีกครั้ง: chmod +x NVIDIA-Linux-x86_64–410.57.run

  4. systemctl start graphical.target

และสุดท้ายตรวจสอบ nvidia-smi

ขอบคุณที่: วิธีการติดตั้งไดรเวอร์ Nvidia และ CUDA-10.0 สำหรับ RTX 2080 Ti GPU บน Ubuntu-16.04 / 18.04

วิธีการยกเลิกการโหลดโมดูลเคอร์เนล 'nvidia-drm'?


0

เพื่อความสมบูรณ์ฉันพบปัญหานี้เช่นกัน ในกรณีของฉันมันกลับกลายเป็นว่าเพราะฉันได้ตั้ง Clang เป็นคอมไพเลอร์เริ่มต้นของฉัน (โดยใช้update-alternatives) nvidia-driver-440ล้มเหลวในการรวบรวม (ตรวจสอบ/var/crash/) แม้ว่าจะaptไม่ได้โพสต์คำเตือนใด ๆ สำหรับผมแล้วการแก้ปัญหาคือการapt purge nvidia-*ตั้งค่าccกลับไปใช้งานgcc, nvidia-driver-440รีบูตและติดตั้ง


-1

ฉันมุ่งมั่นที่ภาชนะเป็นภาพนักเทียบท่า จากนั้นฉันสร้างคอนเทนเนอร์อื่นโดยใช้อิมเมจ docker นี้และปัญหาได้หายไป


-1

คำตอบเหล่านี้ใช้ไม่ได้สำหรับฉัน:

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.

ถอนการติดตั้งไดรเวอร์เก่า418.67และติดตั้งไดรเวอร์ใหม่430.26(ดาวน์โหลด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

รีบูต หากปัญหายังคงมีอยู่:

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

สำหรับเซ็นต์ / rhel

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

แล้วก็

reboot

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.