当我运行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。


当前回答

我在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驱动程序440.33.01更新到450.80.2,解决了这个问题。

sudo apt-get install nvidia-driver-450

sudo reboot

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

我将容器提交到Docker映像中。然后我用这个Docker映像重新创建了另一个容器,问题就解决了。

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

接下来我安装了CUDA。

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

然后它就正常工作了。

我也遇到过同样的问题,我把我的解决方案贴在这里。

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

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

总之,重启电脑后,一切都很好了。重新安装驱动程序后,我的CUDA仍然工作正常。

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

我有这个问题,其他的治疗方法都不管用。错误消息是不透明的,但是检查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 /模块 /lib/modules/4.13.0-43-generic /内核/驱动程序

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