解決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
相關文章
相關標籤/搜索