Phiên bản trình điều khiển / thư viện NVIDIA NVML không khớp


225

Khi tôi chạy, nvidia-smitôi nhận được thông báo sau:

Failed to initialize NVML: Driver/library version mismatch

Một giờ trước tôi nhận được tin nhắn tương tự và gỡ cài đặt thư viện cuda của tôi và tôi đã có thể chạy nvidia-smi, nhận được kết quả như sau:

nvidia-smi-kết quả

Sau này, tôi đã tải xuống cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debtừ trang NVIDIA chính thức và sau đó chỉ đơn giản là:

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

Bây giờ tôi đã cài đặt cuda, nhưng tôi nhận được lỗi không khớp.


Một số thông tin có thể hữu ích:

Chạy cat /proc/driver/nvidia/versiontôi nhận được:

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)

Tôi đang chạy Ubuntu 16.04.2 LTS.

Phát hành hạt nhân là: 4.4.0-66-generic.

Cảm ơn!


12
Bạn có thể đã trộn một cài đặt runfile trước đó với cài đặt trình quản lý gói (hiện tại) (apt-get) của bạn. Làm theo các hướng dẫn trong hướng dẫn cài đặt linux cuda để xóa tất cả các tệp trình điều khiển NVIDIA và CUDA trước đó, sau đó cài đặt lại sau khi bạn đã dọn sạch. Trước khi bắt đầu cài đặt lại, bạn có thể muốn đọc toàn bộ tài liệu hướng dẫn cài đặt linux mà tôi đã liên kết. Xung đột gần như chắc chắn xuất phát từ nỗ lực của bạn để cài đặt gói CUDA 8 GA2 trên cài đặt trình điều khiển 378.13 hiện có của bạn.
Robert Crovella

Tôi đang bỏ phiếu để đóng câu hỏi này vì về cơ bản nó là một câu hỏi về việc cài đặt (hoặc phá vỡ cài đặt) trình điều khiển GPU và không liên quan trực tiếp đến lập trình.
Talonmies

Câu trả lời:


336

Bất ngờ ngạc nhiên, khởi động lại đã giải quyết vấn đề (tôi nghĩ rằng tôi đã thử nó).

Giải pháp Robert Crovella được đề cập trong các bình luận cũng có thể hữu ích cho người khác, vì nó khá giống với những gì tôi đã làm để giải quyết vấn đề ngay lần đầu tiên tôi có nó.


2
vui lòng nhớ quay lại sau một vài ngày và chấp nhận câu trả lời này để câu hỏi này không nằm trong danh sách chưa được trả lời cho thẻ CUDA
Talonmies

5
Tôi đã hoài nghi về việc này sau khi khởi động lại, nhưng dù sao tôi cũng đã thử và CNTT đã làm việc !! Cảm ơn!
Abhishek Potni

8
@AbhishekPotnis Nếu bạn thắc mắc tại sao khởi động lại hoạt động, có thể là do điều này: kiểm tra /var/log/apt/history.logtrên Ubuntu cho thấy hệ thống đã tự động cập nhật libcuda, có lẽ cần phải khởi động lại để tiếp tục hoạt động chính xác. Kể từ đó tôi đã vô hiệu hóa những cập nhật đó với hy vọng tôi sẽ không gặp lại nó.
Giăng

1
Thật không may, đây không phải là một giải pháp lâu dài. Vấn đề có thể xuất hiện trở lại. Giải pháp là cài đặt phiên bản mới hơn của gói nvidia ( nvidia-390). Xem câu trả lời của tôi dưới đây
Stefan Horning

1
Điều này cũng làm việc cho tôi. Một số hướng dẫn bao gồm sudo reboot nowvà những người khác thì không.
rjurney

232

Như @et đã nói, khởi động lại có thể giải quyết vấn đề này, nhưng tôi nghĩ một quy trình mà không cần khởi động lại sẽ giúp ích.

Đối với tiếng Trung, hãy kiểm tra blog của tôi ->

Thông báo lỗi

NVML: Phiên bản trình điều khiển / thư viện không khớp

cho chúng tôi biết mô-đun hạt nhân trình điều khiển Nvidia (kmod) có phiên bản sai, vì vậy chúng tôi nên tải trình điều khiển này và sau đó tải phiên bản chính xác của kmod

Làm thế nào để làm điều đó ?

Đầu tiên, chúng ta nên biết trình điều khiển nào được tải.

lsmod | grep nvidia

bạn có thể nhận được

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

Mục tiêu cuối cùng của chúng tôi là dỡ nvidiamod, vì vậy chúng tôi nên dỡ bỏ mô-đun phụ thuộc vàonvidia

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm

sau đó, dỡ nvidia

sudo rmmod nvidia

Xử lý sự cố

nếu bạn gặp lỗi như rmmod: ERROR: Module nvidia is in use, điều đó cho biết rằng mô-đun hạt nhân đang được sử dụng, bạn nên hủy quá trình sử dụng kmod:

sudo lsof / dev / nvidia *

và sau đó giết các quá trình đó, sau đó tiếp tục dỡ bỏ kmod

Kiểm tra

xác nhận bạn đã dỡ thành công những kmod đó

lsmod | grep nvidia

bạn sẽ không nhận được gì, sau đó xác nhận bạn có thể tải trình điều khiển chính xác

nvidia-smi

bạn sẽ nhận được đầu ra chính xác


3
@suraj nó không chỉ liên kết. Câu trả lời được viết tốt. Vấn đề duy nhất là anh ta không tiết lộ liên kết của mình và bạn đã làm điều đó.
Sagar V

2
@KiralyCraft Cái sai không còn tồn tại trên đĩa, nhưng vẫn còn trong bộ nhớ. Tôi nghĩ nvidia-smi chỉ kích hoạt một quy trình tải mới.
Comzyh

1
Xuất sắc! Không biết đây là nguyên nhân gây ra vấn đề. Vì vậy, khởi động lại làm điều tương tự?
alys

1
@alys Rõ ràng, khởi động lại sẽ dỡ tải và sau đó tải lại tất cả các mô-đun.
Comzyh

1
đã hoạt động nhưng khởi động lại khiến vấn đề trở lại .. và giải pháp của tôi cũng không đúng. Nó hoàn toàn không phải là một bản cài đặt sạch sẽ ..
Kevin He

14

Vì vậy, tôi đã có vấn đề này, không có biện pháp khắc phục nào khác làm việc. Thông báo lỗi không rõ ràng, nhưng kiểm tra dmesg là chính:

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

Tuy nhiên tôi đã loại bỏ hoàn toàn phiên bản 384 và xóa mọi trình điều khiển kernel còn lại nvidia-384*. Nhưng ngay cả sau khi khởi động lại, tôi vẫn nhận được điều này. Thấy điều này có nghĩa là kernel vẫn được biên dịch để tham chiếu 384, nhưng chỉ tìm thấy 410. Vì vậy, tôi đã biên dịch lại kernel của mình:

# 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

Và sau đó nó hoạt động.

Sau khi xóa 384, tôi vẫn còn 384 tệp trong: /var/lib/dkms/nvidia-XXX/XXX.YY/4.13.0-43-generic/x86_64/module /lib/modules/4.13.0-43-generic/ kernel / trình điều khiển

Tôi khuyên bạn nên sử dụng locatelệnh (không được cài đặt theo mặc định) thay vì tìm kiếm hệ thống tập tin mỗi lần.


Cảm ơn rất nhiều! Đó là một ý tưởng tốt để sử dụng locate nvidia-smi. Tôi đã sử dụng lệnh để tìm ra rằng trình điều khiển khác đã được cài đặt.
hao

sudo update-initramfs -c -k uname -rKhông giúp tôi.
mrgloom

dmesgđầu ra: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

Tôi đã nhận được lỗi failed to initialize NVML: Driver/Library version mismatchtừ chỉ báo nhiệt độ nvidia-gpu của tôi. Và nvidia-smi không thể in bất kỳ thông tin nào. Tôi đã cố gắng tìm xem có phiên bản trình điều khiển nvidia nào khác được cài đặt trong Ubuntu của tôi không. Nhưng tôi chỉ tìm thấy nvidia-driver-390. Cuối cùng, rebootđã giúp tôi giải quyết vấn đề.


9

2 câu trả lời hàng đầu không thể giải quyết vấn đề của tôi. Tôi tìm thấy một giải pháp tại diễn đàn chính thức của Nvidia đã giải quyết vấn đề của tôi. Thông tin lỗi dưới đây có thể gây ra bằng cách cài đặt hai phiên bản trình điều khiển khác nhau bằng các phương pháp khác nhau. Ví dụ: cài đặt trình điều khiển Nvidia bằng apt và trình cài đặt chính thức.

Không thể khởi tạo NVML: Phiên bản trình điều khiển / thư viện không khớp

Để giải quyết vấn đề này, chỉ cần thực hiện một trong hai lệnh sau.

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

bash: / usr / bin / nvidia-Uninstall: Không có tệp hoặc thư mục như vậy
Stepan Yakovenko

Nó hoạt động. Đôi khi tập tin gỡ cài đặt không tồn tại.
Qinsheng Zhang

5

Điều này cũng xảy ra với tôi trên Ubuntu 16.04 bằng cách sử dụng nvidia-348gói (phiên bản nvidia mới nhất trên Ubuntu 16.04).

Tuy nhiên, tôi có thể giải quyết vấn đề bằng cách cài đặt nvidia-390thông qua Trình điều khiển GPU độc quyền PPA .

Vì vậy, một giải pháp cho vấn đề được mô tả trên Ubuntu 16.04 là thực hiện điều này:

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

Lưu ý: Hướng dẫn này giả định cài đặt Ubuntu sạch. Nếu bạn đã cài đặt trình điều khiển trước đó, cần phải khởi động lại migh để tải lại tất cả các mô-đun hạt nhân.


1
Điều này và một khởi động lại đã làm điều đó cho tôi!
SaiBot

1

Có vấn đề quá. (Tôi đang chạy Ubuntu 18.04)

Tôi đã làm gì:

dpkg -l | grep -i nvidia

Sau đó sudo apt-get remove --purge nvidia-381(và mọi phiên bản trùng lặp, trong trường hợp của tôi, tôi đã có 381, 384 và 387)

Sau đó sudo ubuntu-drivers devices để liệt kê những gì có sẵn

Và tôi chọn sudo apt install nvidia-driver-430

Sau đó, nvidia-smi đưa ra đầu ra chính xác (không cần phải khởi động lại). Nhưng tôi cho rằng bạn có thể khởi động lại khi nghi ngờ.

Tôi cũng theo cài đặt này để cài đặt lại cuda + cudnn.


Tôi không biết tại sao điều này được đánh dấu xuống (-1). Tôi tăng nó lên 0. Lệnh "dpkg -l | grep -i nvidia" là hợp lệ và hiển thị những gì không bị xóa.
gerardg

1

Tôi gặp vấn đề này sau khi cập nhật kernel bình thường trên máy CentOS. Vì tất cả các trình điều khiển và thư viện CUDA và nVidia đã được cài đặt thông qua kho YUM, tôi đã quản lý để giải quyết các vấn đề bằng các bước sau:

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

Nó đảm bảo kernel và trình điều khiển nVidia của tôi nhất quán. Tôi nghĩ rằng chỉ cần khởi động lại có thể dẫn đến phiên bản sai của mô-đun hạt nhân đang được tải.


Làm việc như người ở!
tối đa

1

Tôi phải khởi động lại hạt nhân của mình và xóa tất cả các gói mà tôi đã cài đặt trước đó (trong lần cài đặt đầu tiên), vui lòng đảm bảo xóa tất cả các gói, ngay cả sau khi xóa các gói bằng lệnh bên dưới

sudo apt-get --purge xóa " nvidia "

các gói như "libtinfo6: i386" không bị xóa

Tôi đang sử dụng Ubuntu 20.04 và Nvidia-driver-440 để bạn phải xóa tất cả các gói được hiển thị bên dưới hình ảnh

Danh sách tất cả các gói cần phải loại bỏ:

img

như trong hình, hãy đảm bảo rằng gói bạn đang cài đặt có kích thước chính xác là 207 Mb cho Nvidia-driver-440, nếu nó ít hơn thì có nghĩa là bạn đã xóa tất cả các gói.


0

Tôi đã cài đặt lại trình điều khiển nvidia: chạy các lệnh này trong rootchế độ:

  1. systemctl isolate multi-user.target

  2. modprobe -r nvidia-drm

  3. Cài đặt lại trình điều khiển Nvidia: chmod +x NVIDIA-Linux-x86_64–410.57.run

  4. systemctl start graphical.target

và cuối cùng kiểm tra nvidia-smi

Cảm ơn: Cách cài đặt Trình điều khiển Nvidia và CUDA-10.0 cho GPU RTX 2080 Ti trên Ubuntu-16.04 / 18.04

Làm cách nào để tải mô-đun hạt nhân 'nvidia-drm'?


-1

Tôi cam kết container vào một hình ảnh docker. Sau đó, tôi tạo lại một container khác bằng cách sử dụng hình ảnh docker này và vấn đề đã biến mất.


-1

Những câu trả lời không hiệu quả với tôi:

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.

Gỡ 418.67cài đặt trình điều khiển cũ và cài đặt trình điều khiển mới 430.26(tải xuống 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

khởi động lại. Nếu vấn đề vẫn còn tồn tại:

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

cho cent / rrc

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

sau đó

reboot

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.