Failed to initialize NVML: Driver/library version mismatch

文章讲述了作者遇到CUDA无法正常工作的错误,原因是NVIDIA内核驱动与系统内核版本不匹配。提供了三种解决方法:重启服务器、退出并重新加载驱动、卸载重装。还给出了防止类似问题再次发生的后续解决方案,如停止nvidia驱动更新或找出并阻止特定程序的驱动更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述


昨天跑代码,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


找到是哪个程序更新的显卡驱动,停止该程序的更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值