解决Driver/library version mismatch

服务器更新nvidia driver 版本以后,常常会出现服务器

Failed to initialize NVML: Driver/library version mismatch

这个问题出现的缘由是kernel mod 的 Nvidia driver 的版本没有更新:code

 1.   通常状况下,重启机器就可以解决。进程

 2.  若是由于某些缘由不可以重启的话,也有办法reload kernel mod。it

简单来看,就两步io

  1. unload nvidia kernel mod
  2. reload nvidia kernel mod

执行起来就是sed

  1. sudo rmmod nvidiagrep

  2. 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
相关文章
相关标签/搜索