42

この記事は最終更新日から1年以上が経過しています。

投稿日

更新日

nvidia-smi で Failed to initialize NVML: Driver/library version mismatch と言われたとき【GPU】

はじめに

機械学習で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が認識されていることが確認できます。

おわりに

読んでいただきありがとうございました。ご意見等ございましたらコメントお願いします。

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について
42