服务器更新nvidia driver 版本以后,常常会出现服务器
Failed to initialize NVML: Driver/library version mismatch
这个问题出现的缘由是kernel mod 的 Nvidia driver 的版本没有更新:code
1. 通常状况下,重启机器就可以解决。进程
2. 若是由于某些缘由不可以重启的话,也有办法reload kernel mod。it
简单来看,就两步io
执行起来就是sed
sudo rmmod nvidiagrep
sudo nvidia-smidi
nvidia-smi 发现没有 kernel mod 会将其自动装载。vi
可是事情远远不是这么简单,通常状况下都会遇到卸载失败。co
$ sudo rmmod nvidia rmmod: ERROR: Module nvidia is in use by: nvidia_modeset nvidia_uvm
这时,就要一点一点的卸载整个驱动了,首先要知道如今kernel mod 的依赖状况,首先咱们从错误信息中知道,nvidia_modeset nvidia_uvm 这两个 mod 依赖于 nvidia, 因此要先卸载他们
$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*
sudo lsof -n -w /dev/nvidia*
对这些进程有个了解,若是一会卸载失败,记得关闭相关进程。
卸载 nvidia_uvm , nvidia_modeset
sudo rmmod nvidia_uvm sudo rmmod nvidia_modeset
而后在losf 一遍, 若是nvidia 的使用 Used by 尚未降到0, kill 相关的进程。而后在执行相关卸载操做
最后
sudo rmmod nvidia nvidia-smi