はじめに
機械学習でGPUを使いたいときにタイトルのエラーで詰まったので、解決までの道のりを書き残します。
OS は Ubuntu 18.04 または 16.04 です。
症状
$ nvidia-smi
を行うと、
Failed to initialize NVML: Driver/library version mismatch
と言われたときの話です。
$ sudo reboot
で再起動するのが一番手っ取り早いようなのですが、できれば再起動したくなかったり、それでも直らなかったりした時のための記事です。
ドライバーのアンロード
エラーを解決するためにLinuxカーネルのnvidia関連のドライバーを一度アンロードします。まずは、
$ lsmod | grep nvidia
で現在使用されているドライバーを確認します。おそらく、
nvidia_uvm 634880 8
nvidia_drm 53248 0
nvidia_modeset 790528 1 nvidia_drm
nvidia 12312576 86 nvidia_modeset,nvidia_uvm
のように表示されるはずです。
最終的にnvidia
をアンロードするために、それぞれを順番にアンロードしていきます。
$ sudo rmmod nvidia_drm
$ sudo rmmod nvidia_modeset
$ sudo rmmod nvidia_uvm
ここで、nvidia_drm
がアンロードできなかった方はDisplay Manegerをkillする必要があるため次の章を見てください。特に何も言われなかった方は飛ばしてください。
nvidia_drm
のアンロード
nvidia_drm
をアンロードするために、Display Managerをkill
します。
具体的には以下のコマンドを順番に実行します。途中で選択肢が出てきたら適当に選択してください。
$ systemctl stop gdm
$ systemctl isolate multi-user.target
$ systemctl stop systemd-logind
$ killall gdm-x-session
ここまでできたらもう一度
$ sudo rmmod nvidia_drm
$ sudo rmmod nvidia_modeset
$ sudo rmmod nvidia_uvm
を実行してみましょう。
#ndivia
のアンロード
最後にnvidia
をアンロードします。
$ sudo rmmod nvidia
成功したように思えたら、もう一度ドライバーを確認しましょう。
$ lsmod | grep nvidia
これで何も表示されなければ成功です。最後にnvidia-smi
でGPUが認識できているか確認してみましょう。
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.36.06 Driver Version: 450.36.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 TITAN Xp Off | 00000000:09:00.0 Off | N/A |
| 25% 41C P0 57W / 250W | 0MiB / 12196MiB | 2% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
GPUが認識されていることが確認できます。
おわりに
読んでいただきありがとうございました。ご意見等ございましたらコメントお願いします。