Failed to initialize NVML: Driver/library version mismatch

问题描述

昨天跑代码,cuda还能好好的to(device),今天就不行了。输出torch.cuda.is_available()显示False,运行代码出现以下错误:

UserWarning:CUDA initialization:Unexpected error from cudaGetDeviceCount().

在终端输入nvidia-smi出现了以下错误

Failed to initialize NVML: Driver/library version mismatch

上网查询,发现了许多解决方法。为了更好的解决问题,并且避免再次出现,我对这些方法进行了简单的整理。希望能够帮到大家。

问题原因

我比较赞同这篇文章给出的解释:NVIDIA内核驱动版本与系统内核版本不一致
出现该问题的原因是:系统驱动自动更新
在终端输入:

cat /var/log/dpkg.log |grep nvidia

可以看到以下信息:
系统驱动更新日志
红框里指的是,系统驱动从470.141.03更新到了470.161.03。
此时在终端输入:

cat /proc/driver/nvidia/version

可以发现显卡驱动内核版本还是原来的版本(由于我已经更新过了,这里不再贴图)

解决方法

解决方法1

重启服务器,在终端输入

sudo reboot

重启服务器之后内核会重新加载,并且与驱动版本一致。如下图所示,系统内核版本已经与驱动版本一致了。
重启后系统内核版本

解决方法2

退出当前内核显卡模块,重新加载更新后的驱动作为内核模块
具体步骤参考这篇文章

解决方法3

卸载现有驱动,重新安装。
具体步骤参考这篇文章

ps:本人重启之后,问题就解决了。没有尝试第二种与第三中方法,请大家根据自己的情况选择合适的方法。

本来文章到这里就要结束了,但是为了避免再次出现这样的问题,机智的博主们给出了一些解决方案。

后续解决

由于是系统驱动更新导致出现的问题,那么就有可能再次出现这样的问题。应该如何解决呢?

后续解决方案1

停止nvidia更新
具体可参考这篇文章

后续解决方案2

找到是哪个程序更新的显卡驱动,停止该程序的更新
具体步骤参考这篇文章

文章到这里就结束了,希望大家都能顺利解决自己的问题。

参考文章

[1]Nvidia 显卡 Failed to initialize NVML Driver/library version mismatch 错误解决方案
[2]nvidia-smi Failed to initialize NVML: Driver/library version mismatch解决方法(不用重启)
[3]Failed to initialize NVML: Driver/library version mismatch解决方案
[4]Failed to initialize NVML: Driver/library version mismatch

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注