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

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

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

之后,我从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。


当前回答

这些答案对我不起作用:

我的回答 Comzyh的回答 user9170的回答

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 /司机/ nvidia /版本

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)

其他回答

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

接下来我安装了CUDA。

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

然后它就正常工作了。

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

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

我在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

它确保我的内核和我的英伟达驱动程序是一致的。我认为只是重新启动可能会导致内核模块加载错误的版本。

我必须重新启动内核并删除之前安装的所有包(在第一次安装期间)。请确保删除所有的包,即使在删除包后使用下面的命令:

sudo apt-get --purge remove "*nvidia*"

像“libtinfo6:i386”这样的包不会被删除。

我使用的是Ubuntu 20.04 (Focal Fossa)和Nvidia-driver-440。为此,您必须删除下图所示的所有包。

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

如图所示,确保您正在安装的包的大小正确。Nvidia-driver-440的内存为207 MB。如果它更少,这意味着您还没有删除所有的包。

为什么会发生版本不匹配,我们如何防止它再次发生?

您可能会发现nvidia-*的版本在这些位置是不同的:

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

重新启动应该可以工作,但是您可能希望通过修改/etc/apt/sources.list来禁止这个包的自动更新。D /文件或简单地通过执行apt-mark hold nvidia-utils-version_number命令保存包。

附注:一些内容是受此启发的(原始说明是中文的,所以我参考了翻译版本)