Невідповідність драйвера / бібліотеки NVIDIA NVML / бібліотеки


224

Під час запуску 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-загальний.

Дякую!


12
Ви, мабуть, змішали попередню установку запуску файлів із вашою (поточною) установкою менеджера пакунків (apt-get). Дотримуйтесь інструкцій із посібника з встановлення cuda linux, щоб видалити всі попередні драйвери NVIDIA та файли CUDA, а потім перевстановіть після того, як ви очистили це. Перш ніж розпочати перевстановлення, можливо, ви захочете прочитати весь посібник з встановлення Linux, який я пов’язав. Конфлікт майже напевно виникає з вашої спроби встановити пакет CUDA 8 GA2 поверх існуючої інсталяції драйверів 378.13.
Роберт Кровелла

Я голосую за закриття цього питання, оскільки це в основному питання про встановлення (або порушення роботи) драйверів GPU і не пов'язане безпосередньо з програмуванням.
талонії

Відповіді:


333

Сюрприз сюрпризу, перезавантаження вирішив проблему (я думав, що я вже спробував це).

Рішення, про яке згадував Роберт Кровелла в коментарях, також може бути корисним комусь іншому, оскільки воно досить схоже на те, що я зробив, щоб вирішити проблему в перший раз, коли у мене виникло це питання.


2
будь ласка, не забудьте повернутися через кілька днів і прийняти цю відповідь, щоб це запитання
випадало з невідповідального

5
Я скептично ставився до цього, працюючи після перезавантаження, але, тим не менше, я спробував це, і він працював !! Дякую!
Абхішек Потніс

8
@AbhishekPotnis Якщо вам цікаво, чому перезавантаження працювала, це може бути через це: перевірка /var/log/apt/history.logна Ubuntu виявила, що система автоматично оновлювала libcuda, що, імовірно, вимагало перезавантаження, щоб продовжувати функціонувати правильно. З тих пір я відключив ці оновлення в надії, що я більше не побачу їх.
Джон

1
На жаль, це не є постійним рішенням. Проблема може з’явитися знову. Рішення - встановити нову версію пакету nvidia ( nvidia-390). Дивіться мою відповідь нижче
Стефан Хорнінг

1
Це теж працювало для мене. Деякі інструкції включають, sudo reboot nowа інші - ні.
rjurney

231

Як сказав @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

наша кінцева мета - розвантажити nvidiaмод, тому ми повинні розвантажувати модуль залежно від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 це не просто пов'язано. відповідь добре написана. єдине питання - він не розголосив свою приналежність, і ви це зробили.
Сагар V

2
@KiralyCraft Помилковий більше не існує на диску, але все ще зберігається в пам'яті. nvidia-smi просто запускає нову процедуру завантаження, я думаю.
Comzyh

1
Блискуче! Поняття не мав, що саме це спричинило проблему. Тож перезавантаження робить те саме?
аліс

1
@alys Очевидно, що перезавантаження буде вивантажувати, а потім перезавантажувати весь модуль.
Comzyh

1
працював, але перезавантаження повертає проблему .. і моя резолюція також не вірна. Це зовсім не чиста установка ..
Кевін Він

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. Я використовував команду, з'ясовуючи, що інший драйвер встановлений.
хао

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

Топ-2 відповіді не можуть вирішити мою проблему. Я знайшов рішення на офіційному форумі Nvidia і вирішив мою проблему. Наведена нижче інформація про помилку може спричинити встановлення двох різних версій драйвера за різних підходів. Наприклад, встановіть драйвер Nvidia за допомогою apt та офіційного інсталятора.

Не вдалося ініціалізувати NVML: Невідповідність версії драйвера / бібліотеки

Щоб вирішити цю проблему, потрібно виконати лише одну з наступних двох команд.

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

bash: / usr / bin / nvidia-uninstall: Немає такого файлу чи каталогу
Степан Яковенко

Це працює. Іноді файл для видалення не існує.
Qinsheng Zhang

8

Я отримав помилку failed to initialize NVML: Driver/Library version mismatchвід свого nvidia-gpu-індикатора температури. І nvidia-smi не вдалося надрукувати жодну інформацію. Я намагався знайти, чи були інші версії драйвера nvidia, встановлені в моєму ubuntu. Але я щойно знайшов nvidia-driver-390. Врешті-решт, rebootдопомогла мені вирішити проблему.


5

Це сталося і зі мною на Ubuntu 16.04 за допомогою nvidia-348пакета (остання версія nvidia на Ubuntu 16.04).

Однак я міг би вирішити проблему, встановивши nvidia-390через власний GPU Driver 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 Мб для 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'?


-1

Я вклав контейнер у зображення докера. Потім я відтворив інший контейнер, використовуючи це зображення докера, і проблема не зникла.


-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

за цент / рель

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

тоді

reboot

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.