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

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

Failed to initialize NVML: Driver/library version mismatch

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

nvidia-smi-result

之后,我从官方NVIDIA页面下载了cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb,然后简单地:
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 (Xenial Xerus)操作系统。

内核版本是4.4.0-66-generic。


30
您可能将之前的运行文件安装和当前的软件包管理器安装(apt-get)混合在一起了。请按照cuda Linux安装指南中的说明删除所有先前的NVIDIA驱动程序和CUDA文件,然后在清理完毕后重新安装。在重新安装之前,您可能需要阅读我提供链接的整个Linux安装指南文档。冲突几乎肯定是由于您尝试在现有的378.13驱动程序安装上安装CUDA 8 GA2软件包引起的。 - Robert Crovella
30
如果不是在 Stackoverflow 上,那么哪里是一个好的地方来提出与 GPU 相关的问题? - bug_spray
2
我正在使用Ubuntu,我认为在Linux上更新Nvidia驱动程序后出现了错误。也许需要自动删除并重新启动更新Nvidia驱动程序。 - lechat
8
对我来说,运行sudo reboot解决了我的问题。 - mikey
7
又有一组过于热衷的“关闭”投票针对一个与成千上万其他问题相似但未被关闭的问题,这个问题直接关系到数千名程序员的生活,与“框架意见”无关,而与实际开发人员的问题有关。这些人可能并不花太多时间与NVidia或CUDA一起工作。再次强调,SO最大的失败之处在于没有随着关闭投票者数量的增加而提高关闭问题的难度。 - Dan Nissenbaum
显示剩余3条评论
19个回答

3

重新启动或卸载驱动无法解决我的问题。 我通过将Nvidia驱动程序从440.33.01更新到450.80.2来解决了这个问题。

sudo apt-get install nvidia-driver-450

sudo reboot

我正在运行Ubuntu 20.04 LTS(Focal Fossa),这是一台远程服务器。


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 remove "*nvidia*"

像"libtinfo6:i386"这样的软件包不会被删除。

我正在使用Ubuntu 20.04(Focal Fossa)和Nvidia-driver-440。为此,您必须删除下面图片中显示的所有软件包。

需要删除的所有软件包列表:

img

如图所示,请确保您要安装的软件包大小正确。对于Nvidia-driver-440来说,大小应为207 MB。如果小于此值,说明您还没有删除所有的软件包。


1
请查看 我们是否应该编辑问题将图像中的代码转录为文本? 和 *为什么在提问时不上传代码/错误的图片?(例如,"仅应使用图像来说明无法用其他方式清晰表述的问题,例如提供用户界面的截图。"*),并采取适当的操作(它也涵盖了答案)。提前感谢。 - Peter Mortensen

0

0

我有一个更简单的解决方案,对我很有效。在Fedora 33上,尝试以下操作:

rpm -qa | grep -i nvidia | grep f32

在先前的 Fedora 版本中,您应该列出了两个与 OpenGL 相关的软件包。删除它们并重新启动。

删除并重新安装整个 Nvidia 软件包集是过度杀伤力的做法。


0

首先我安装了Nvidia驱动程序。

接下来我安装了CUDA。

之后,我遇到了“驱动程序/库版本不匹配”的错误,但我能看到CUDA的版本,所以我清除了Nvidia驱动程序并重新安装了它。

然后它正常工作了。


0

我将容器提交为Docker镜像。然后,我使用此Docker镜像重新创建了另一个容器,问题就解决了。


0

为了完整性,我也遇到了这个问题。在我的情况下,原来是因为我将Clang设置为默认编译器(使用update-alternatives),导致nvidia-driver-440无法编译(检查/var/crash/),尽管apt没有发布任何警告。对于我来说,解决方案是apt purge nvidia-*,将cc重新设置为使用gcc,重新启动,并重新安装nvidia-driver-440


-2

我曾经遇到同样的问题,现在在这里发布我的解决方案。

在我的情况下,NVRM版本是440.100,驱动程序版本是460.32.03。我的驱动程序是通过sudo apt install caffe-cuda更新的,当时我没有注意到,但是我从/var/log/apt/history.log中检查了它。

按照我的NVRM版本,我只使用了sudo apt install nvidia-driver-440,但它安装了450.102。我不知道为什么它安装了另一个版本,而且nvidia-smi显示的是450.102.04

无论如何,在重新启动电脑后,一切都正常工作了。重新安装驱动程序后,我的CUDA仍然可以正常工作。

我没有删除/清除与Nvidia驱动程序相关的任何内容。版本460.32.03会自动卸载,运行sudo apt install nvidia-driver-440即可。


因为问题已经关闭,我无法在此处发布解决方案。但对我来说,修复方法是不同的。请参见此处:stackoverflow.com/a/71672261/10554033 - ladar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接