问题描述
昨天跑代码,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