[转] 解决Driver/library version mismatch
跑模型 torch.cuda.is_available()返回 False
nvidia-smi返回:Failed to initialize NVML: Driver/library version mismatch
查了一下,这篇博文靠谱,留着~
地址:https://comzyh.com/blog/
转载内容:
服务器更新nvidia driver 版本之后,经常会出现
1
|
Failed to initialize NVML: Driver/library version mismatch.<br>
|
这个问题出现的原因是kernel mod 的 Nvidia driver 的版本没有更新,一般情况下,重启机器就能够解决,如果因为某些原因不能够重启的话,也有办法reload kernel mod。
简单来看,就两步
- unload nvidia kernel mod
- reload nvidia kernel mod
执行起来就是
-
sudo rmmod nvidia
-
sudo nvidia-smi
nvidia-smi 发现没有 kernel mod 会将其自动装载。
但是事情远远不是这么简单,一般情况下都会遇到卸载失败。
1
2
|
$ sudo rmmod nvidia
rmmod: ERROR: Module nvidia is in use by: nvidia_modeset nvidia_uvm
|
这时,就要一点一点的卸载整个驱动了,首先要知道现在kernel mod 的依赖情况,首先我们从错误信息中知道,nvidia_modeset nvidia_uvm 这两个 mod 依赖于 nvidia, 所以要先卸载他们
1
2
3
4
5
|
$lsmod | grep nvidia
nvidia_uvm 647168 0
nvidia_drm 53248 0
nvidia_modeset 790528 1 nvidia_drm
nvidia 12144640 152 nvidia_modeset,nvidia_uvm 12144640 152 nvidia_modeset,nvidia_uvm
|
可以看到 nvidia 被使用了152词,我们可以先卸载 nvidia_uvm 和 nvidia_modeset
先查看下有哪些进程使用了 nvidia*
1
|
sudo lsof -n -w /dev/nvidia*
|
这些进程有个了解,如果一会卸载失败,记得关闭相关进程。
卸载
1
2
|
sudo rmmod nvidia_uvm
sudo rmmod nvidia_modeset
|
再 lsof 一遍,如果 nvidia 的使用 Used by 还没有降到 0,kill 相关进程
最后
1
2
|
sudo rmmod nvidia
nvidia-smi
|
收工
/* 人应该感到渺小,在宇宙面前,在美面前,在智慧面前;
而在人群中,应该意识到自己的尊严。*/