103
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-06-23

はじめに

機械学習でGPUを使いたいときにタイトルのエラーで詰まったので、解決までの道のりを書き残します。
OS は Ubuntu 18.04 または 16.04 です。

症状

$ nvidia-smi
```
を行うと、

```text
Failed to initialize NVML: Driver/library version mismatch
```
と言われたときの話です。

```shell:
$ sudo reboot
```
で再起動するのが一番手っ取り早いようなのですが、できれば再起動したくなかったり、それでも直らなかったりした時のための記事です。


# ドライバーのアンロード
エラーを解決するためにLinuxカーネルのnvidia関連のドライバーを一度アンロードします。まずは、

```shell
$ lsmod | grep nvidia
```
で現在使用されているドライバーを確認します。おそらく、

```text
nvidia_uvm            634880  8
nvidia_drm             53248  0
nvidia_modeset        790528  1 nvidia_drm
nvidia              12312576  86 nvidia_modeset,nvidia_uvm
```
のように表示されるはずです。
最終的に`nvidia`をアンロードするために、それぞれを順番にアンロードしていきます。

```shell
$ sudo rmmod nvidia_drm
$ sudo rmmod nvidia_modeset
$ sudo rmmod nvidia_uvm
```
ここで、`nvidia_drm`がアンロードできなかった方はDisplay Manegerをkillする必要があるため次の章を見てください。特に何も言われなかった方は飛ばしてください。

## `nvidia_drm`のアンロード

`nvidia_drm`をアンロードするために、Display Managerを`kill`します。
具体的には以下のコマンドを順番に実行します。途中で選択肢が出てきたら適当に選択してください。

```shell
$ systemctl stop gdm
$ systemctl isolate multi-user.target
$ systemctl stop systemd-logind
$ killall gdm-x-session
```
ここまでできたらもう一度

```shell
$ sudo rmmod nvidia_drm
$ sudo rmmod nvidia_modeset
$ sudo rmmod nvidia_uvm
```
を実行してみましょう。

#`ndivia`のアンロード
最後に`nvidia`をアンロードします。

```
$ sudo rmmod nvidia
```
成功したように思えたら、もう一度ドライバーを確認しましょう。

```shell
$ lsmod | grep nvidia
```
これで何も表示されなければ成功です。最後に`nvidia-smi`でGPUが認識できているか確認してみましょう。

```shell
$ nvidia-smi
```

```text
+-----------------------------------------------------------------------------+
| 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が認識されていることが確認できます。


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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
103
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?