NVIDIA NVML驱动程序/库版本不匹配


223

运行时,nvidia-smi我收到以下消息:

Failed to initialize NVML: Driver/library version mismatch

一个小时前,我收到了同样的消息,并卸载了cuda库,并且能够运行nvidia-smi,得到以下结果:

nvidia-smi-result

之后,我cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debNVIDIA官方页面下载了文件,然后简单地:

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安装指南文档。几乎可以肯定是由于您尝试在现有378.13驱动程序安装之上安装CUDA 8 GA2软件包而引起冲突。
罗伯特·克罗维拉

我投票结束这个问题,因为它基本上是关于安装(或中断安装)GPU驱动程序的问题,与编程没有直接关系。
talonmies

Answers:


332

令人惊讶的是,重新启动解决了这个问题(我以为我已经尝试过了)。

评论中提到的Robert Crovella解决方案也可能对其他人有用,因为它与我第一次解决该问题时所做的工作非常相似。


2
请记住几天
后再

5
重新启动后,我对此工作表示怀疑,但尽管如此,我还是尝试了一下,并且成功了!!谢谢!
Abhishek Potnis

8
@AbhishekPotnis如果您想知道重新启动的原因,可能是因为以下原因:/var/log/apt/history.log在Ubuntu上检查后发现系统已自动更新了libcuda,大概需要重新启动才能继续正常运行。从那以后,我禁用了这些更新,希望不再看到它。
约翰·约翰(John John)

1
不幸的是,这不是一个永久性的解决方案。该问题可能会再次出现。解决方案是安装较新版本的nvidia软件包(nvidia-390)。请参阅下面的答案
Stefan Horning

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

我们的最终目标是卸载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终止该进程:

须藤lsof / dev / nvidia *

然后杀死这些进程,然后继续卸载kmods

测试

确认您已成功卸载这些kmod

lsmod | grep nvidia

您应该什么也不会得到,然后确认您可以加载正确的驱动程序

英伟达

你应该得到正确的输出


3
@suraj不只是链接。答案写得很好。唯一的问题是他没有透露他的隶属关系,而你做到了。
Sagar V

2
@KiralyCraft错误的磁盘不再存在于磁盘上,而是仍然存在于内存中。我认为nvidia-smi会触发一个新的加载过程。
Comzyh

1
辉煌!不知道这是引起问题的原因。那么重启会发生同样的事情吗?
alys

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之后,我在/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官方论坛上找到了解决问题的方法。以下错误信息可能是通过使用不同方法安装两个不同版本的驱动程序引起的。例如,通过apt和官方安装程序安装Nvidia驱动程序。

初始化NVML失败:驱动程序/库版本不匹配

要解决此问题,只需执行以下两个命令之一。

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

bash:/ usr / bin / nvidia-uninstall:没有这样的文件或目录
Stepan Yakovenko

有用。有时卸载文件不存在。
张勤生

8

failed to initialize NVML: Driver/Library version mismatch从我的nvidia-gpu-温度指示器中得到了错误。而且nvidia-smi无法打印任何信息。我试图查找我的ubuntu中是否安装了其他版本的nvidia驱动程序。但是我刚刚找到nvidia-driver-390。最后,reboot帮助我解决了问题。


5

使用nvidia-348软件包(Ubuntu 16.04的最新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 '19

1

在CentOS计算机上正常更新内核后,我遇到了此问题。由于已通过YUM存储库安装了所有CUDA和nVidia驱动程序和库,因此我设法使用以下步骤解决了这些问题:

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

如图所示,请确保所安装的软件包的正确大小为Nvidia-driver-440的207 Mb,如果较小,则表示您尚未卸下所有软件包。



-1

我将容器提交到docker映像中。然后,我使用此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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.