由于经常跑深度学习,所以对于显卡驱动什么的都还是整的比较明白的不含糊,所以都能跑的起来。但是今天跑pytorch框架时(用到cuda)忽然给我报了个错:
RuntimeError: No CUDA GPUs are available
这给我整不会了,因为用cuda一直都用的好好的今天忽然这样,我首先torch.cuda.is_available()
试了一下,果然是false。
然后
nvidia-smi
结果
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
应该是我的ubuntu偷偷趁我不注意把kernel给升级了,导致nvidia的版本不匹配。
运行cat /var/log/dpkg.log |grep nvidia
看第一行,可以看到从525.116.04升级到525.125.06,然后cat /proc/driver/nvidia/version
可以看到nvidia的版本还是旧的116的(因为我已经解决了所以现在是新的了截图不了),所以验证了猜想。
所以接下来,我本着尽量不重装的原则尝试解决方法。
首先重启的时候选择低版本的内核进入然后运行nvidia-smi就变成了
Failed to initialize NVML: Driver/library version mismatch
且再运行cat /proc/driver/nvidia/version
就显示找不到路径,方法1 failed。
然后试一下一下两条命令:
sudo apt-get install dkms
sudo dkms install -m nvidia -v 525.125.06
这个nvidia的版本号可以用ls /usr/src
查看
正常来说,百分之七八十的人都是到这一步之后再运行nvidia-smi
就可以成功显示了。但是我还不行,我运行第二句显示我已经installed了:
Module nvidia/525.125.06 already installed on kernel 5.xxx-xx-generic/x86_64
所以继续。
最后我是进入bios将security boot关掉就成功了。