服務器更新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