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

时间:2017-03-25 22:47:00

标签: cuda driver gpu nvidia

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

Failed to initialize NVML: Driver/library version mismatch

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

nvidia-smi-result

在此之后,我从the official NVIDIA page下载了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。

内核版本是:4.4.0-66-generic。

谢谢!

24 个答案:

答案 0 :(得分:217)

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

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

答案 1 :(得分:173)

正如@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 mod,因此我们应该根据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

你应该得到正确的输出

答案 2 :(得分:10)

sudo reboot

在带有两个 NVIDIA GeForce GTX 1080 Ti 的 Ubuntu 18.04 上重新启动为我解决了这个问题。

答案 3 :(得分:7)

对于那些真的想知道为什么会发生版本不匹配以及如何防止它再次发生的人。这是因为 nvidia-* 的版本在这些位置不同:

dpkg -l | grep nvidia(查看 nvidia-utils-xxx 包版本) 和 cat /proc/driver/nvidia/version(看内核模块的版本,例如460.56

重新启动应该可以工作,但是您可能希望通过修改 /etc/apt/sources.list.d/ 文件 OR 来禁止此包的自动更新(我刚刚找到了一种更简单的方法来 hold package) 通过执行此命令 apt-mark hold nvidia-utils-version_number

干杯。

部分内容灵感来自this(原文是中文,所以我参考了翻译版)

答案 4 :(得分:4)

使用nvidia-348软件包(Ubuntu 16.04上最新的nvidia版本)在Ubuntu 16.04上也发生了这种情况。

但是,我可以通过Proprietary GPU Drivers PPA安装nvidia-390来解决问题。

因此,解决Ubuntu 16.04上描述的问题的方法是:

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

注意:本指南假定Ubuntu安装干净。如果您安装了以前的驱动程序,则需要重新启动以重新加载所有内核模块。

答案 5 :(得分:4)

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

答案 6 :(得分:3)

大多数情况下重启会解决 Ubuntu 18.04 上的问题。

“初始化 NVML 失败:驱动程序/库版本不匹配?”错误通常意味着 CUDA 驱动程序仍在运行与当前使用的 CUDA 工具包版本不兼容的旧版本。重新启动计算节点通常会解决此问题。

答案 7 :(得分:3)

如果您最近进行了更新,则重新启动可能会解决此问题。

答案 8 :(得分:2)

所以我遇到了这个问题,其他任何补救措施都无效。错误消息是不透明的,但是检查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/kernel/drivers

我建议使用locate命令(默认情况下未安装),而不是每次都搜索文件系统。

答案 9 :(得分:1)

sudo reboot

在带有两个 NVIDIA GeForce GTX 1080 Ti 的 Ubuntu 18.04 上重新启动为我解决了这个问题。

答案 10 :(得分:1)

我已经重新安装了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

感谢: How To Install Nvidia Drivers and CUDA-10.0 for RTX 2080 Ti GPU on Ubuntu-16.04/18.04

How to unload kernel module 'nvidia-drm'?

答案 11 :(得分:0)

我将容器提交到docker映像中。然后我使用此docker映像重新创建另一个容器,问题消失了。

答案 12 :(得分:0)

我必须重新启动内核并删除以前安装的所有软件包(第一次安装期间),即使通过以下命令删除软件包后,也请确保删除所有软件包

sudo apt-get --purge删除“ nvidia

“ libtinfo6:i386”之类的软件包不会被删除

我正在使用Ubuntu 20.04和Nvidia-driver-440,因为您必须删除图像下方显示的所有软件包

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

img

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

答案 13 :(得分:0)

在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驱动程序一致。我认为仅重新启动可能会导致加载错误版本的内核模块。

答案 14 :(得分:0)

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

接下来我安装了 cuda。

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

然后它工作正常。

答案 15 :(得分:0)

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

rpm -qa | grep -i nvidia | grep f32

您应该列出了以前版本的 Fedora for opengl 中的两个软件包。删除它们并重新启动。

删除并重新安装整个 nvidia 软件包集是多余的。

答案 16 :(得分:0)

重新启动或卸载驱动程序对我不起作用。 我通过更新我的 nvidia 驱动程序 440.33.01 到 450.80.2 解决了这个问题。

sudo apt-get install nvidia-driver-450

sudo reboot

我正在运行 Ubuntu 20.04 LTS,这是一个远程服务器

答案 17 :(得分:-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)

答案 18 :(得分:-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

对于debian / ubuntu

update-initramfs -u

如果问题仍然存在

apt install -y dkms && dkms install -m nvidia -v 440.82

将440.82更改为您的实际版本。

提示:获取Nvidia驱动程序版本:

ls /usr/src

您会找到Nvidia驱动程序目录,例如nvidia-440.82


您还可以删除所有Nvidia pkg并重新安装驱动程序

apt purge nvidia*
apt purge *cuda*

#check
apt list -i |grep nvidia
apt list -i |grep cuda

答案 19 :(得分:-1)

出于完整性考虑,我也遇到了这个问题。就我而言,事实证明,因为我已将Clang设置为默认编译器(使用update-alternatives),尽管nvidia-driver-440未编译,/var/crash/仍未能编译(检查apt)不要发布任何警告。对我来说,解决方案是apt purge nvidia-*,将cc设置为使用gcc,重新启动并重新安装nvidia-driver-440

答案 20 :(得分:-1)

前2个答案无法解决我的问题。我在Nvidia官方论坛上找到了解决问题的方法。 以下错误信息可能是通过使用不同方法安装两个不同版本的驱动程序引起的。例如,通过apt和官方安装程序安装Nvidia驱动程序。

  

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

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

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

答案 21 :(得分:-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提供了正确的输出(无需重新启动)。但我想您有疑问时可以重新启动。

我还跟随this installation重新安装了cuda + cudnn。

答案 22 :(得分:-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

无论如何,在重新启动我的 PC 后,现在一切正常。重新安装驱动程序后,我的 cuda 仍然工作正常。

我没有删除/清除任何与 nvidia 驱动程序相关的内容。版本 460.32.03 已通过运行 sudo apt install nvidia-driver-440

自动卸载

答案 23 :(得分:-3)

对于我来说,我先安装了nvidia驱动程序,然后安装了cuda。我发现只需安装cuda就可以修复它。 https://developer.nvidia.com/cuda-toolkit