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


231

Когда я бегу, 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.
Роберт Кровелла

Я голосую, чтобы закрыть этот вопрос, так как это в основном вопрос об установке (или обрыве установки) драйверов GPU, а не о программировании.
talonmies

Ответы:


341

Сюрприз-сюрприз, перезагрузка решила проблему (я думал, что уже пробовал это).

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


2
пожалуйста, не забудьте вернуться через несколько дней и принять этот ответ, чтобы этот вопрос не попал в список без ответа для тега CUDA
talonmies

5
Я скептически относился к этой работе после перезагрузки, но, тем не менее, я попробовал, и ЭТО РАБОТАЛО !! Спасибо!
Абхишек Потнис

8
@AbhishekPotnis Если вам интересно, почему перезагрузка сработала, это может быть из-за этого: проверка /var/log/apt/history.logUbuntu показала, что система автоматически обновила libcuda, что, по-видимому, требовало перезагрузки для продолжения работы. С тех пор я отключил эти обновления в надежде, что больше его не увижу.
Джон

1
К сожалению, это не постоянное решение. Проблема может появиться снова. Решение состоит в том, чтобы установить более новую версию пакета nvidia ( nvidia-390). Смотрите мой ответ ниже
Стефан Хорнинг

1
Это также сработало для меня. Некоторые инструкции включают в себя, sudo reboot nowа другие нет.
Рюрни

233

Как сказал @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_uvm
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-СМИ

вы должны получить правильный вывод


3
@Suraj это не просто связано. ответ хорошо написан. единственная проблема в том, что он не раскрыл свою принадлежность, а вы сделали это.
Сагар V

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

1
Brilliant! Не знал, что это было причиной проблемы. Итак, перезагрузка делает то же самое?
Элис

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

Я получил ошибку failed to initialize NVML: Driver/Library version mismatchот моего nvidia-gpu-Temperature-Indicator. И nvidia-smi не удалось напечатать какую-либо информацию. Я попытался найти, были ли другие версии драйвера nvidia, установленные в моем Ubuntu. Но я только что нашел nvidia-driver-390. В конце концов, rebootпомог мне решить проблему.


9

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

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

Чтобы решить эту проблему, нужно выполнить только одну из следующих двух команд.

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

bash: / usr / bin / nvidia-uninstall: нет такого файла или каталога
Степан Яковенко,

Оно работает. Иногда файл удаления не существует.
Циньшэн Чжан

5

Это также случилось со мной на Ubuntu 16.04 с использованием nvidia-348пакета (последняя версия nvidia на Ubuntu 16.04).

Однако я мог бы решить эту проблему, установив с nvidia-390помощью проприетарных драйверов графического процессора 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 на 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

Я передал контейнер в образ докера. Затем я воссоздаю другой контейнер, используя этот образ докера, и проблема исчезла.


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