解决Driver/library version mismatch
发表于:2022-04-27 |
 概述
 服务器更新nvidia driver 版本之后,经常会出现 Failed to initialize NVML: Driver/library version mismatch 
 这个问题出现的原因是kernel mod 的 Nvidia driver 的版本没有更新: 
  1.   一般情况下,重启机器就能够解决。 
  2.  如果因为某些原因不能够重启的话,也有办法reload kernel mod
 服务器更新nvidia driver 版本之后,经常会出现
 
 Failed to initialize NVML: Driver/library version mismatch
 这个问题出现的原因是kernel mod 的 Nvidiadriver 的版本没有更新:
 
 1. 一般情况下,重启机器就能够解决。
 
 2. 如果因为某些原因不能够重启的话,也有办法reload kernel mod。
 
 简单来看,就两步
 
 unload nvidiakernel mod
 reload nvidia kernel mod
 执行起来就是
 
 sudo rmmod nvidia
 
 sudo nvidia-smi
 
 nvidia-smi 发现没有 kernel mod 会将其自动装载。
 
 但是事情远远不是这么简单,一般情况下都会遇到卸载失败。
 
 $ 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
上一篇:
Ubuntu驱动nvidia更新与说明
下一篇:
docker删除状态为Exited的容器