NVIDIA Driver って突然使えなくなりますよね。
今回、nvidia-smi
コマンドを実行すると、以下のエラーが発生しました。
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
以前も似たようなエラーに遭遇していて、その時は NVIDIA Driver と CUDA の再インストールで解決しました。おそらく、sudo apt upgrade
で知らない間に関連するライブラリをアップデートしてドライバの依存関係が壊れてしまっていたのだと思います。
今回も再インストールで直るかなと思ったのですが、少しはまったので記事にしました。
環境
- Ubuntu 18.04
- GeForce GTX 1080 Ti
試したこと
毎回、NVIDIA Driver と CUDA の再インストールで直るので、今回も試してみました。
再インストールの方法は以下の記事を参考にしました。
https://qiita.com/porizou1/items/74d8264d6381ee2941bd
NVIDIA Driver のインストール方法はたくさんありますが、自分は Ubuntu を使っているので、ubuntu-drivers
コマンドを使っています。
ubuntu-drivers devices
でインストール候補の NVIDIA Driver を探して、apt でインストールするのですが、インストール最中に以下のメッセージがでます。
...
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/nvidia-kernel-source-470.0.crash'
Error! Bad return status for module build on kernel: 5.4.0-84-generic (x86_64)
Consult /var/lib/dkms/nvidia/470.63.01/build/make.log for more information.
dpkg: error processing package nvidia-dkms-470 (--configure):
...
Errors were encountered while processing:
nvidia-dkms-470
nvidia-driver-470
E: Sub-process /usr/bin/dpkg returned an error code (1)
どうやら nvidia-dkms が怪しいようです。
また、
sudo apt purge nvidia*
で関連するライブラリをアンインストールしようとしても、nvidia-dkms はアンインストールできなかったです。
原因
ググってみると、以下のスレッドを見つけました。
https://forums.developer.nvidia.com/t/nvidia-driver-470-does-not-install-on-ubuntu-20-04-lts/191593
カーネルをビルドした時のコンパイラと現在DKMSをビルドする時のコンパイラが異なっていることが原因とのことです。DKMSとは、Linux でカーネルに組み込まれていないカーネルモジュールを動的にロードする仕組みとのことです。カーネルモジュールのビルドかロードに失敗しているようですね。
実際に gcc のバージョンを見てみると、Not Found となっていました。。。
以下で、gcc をインストールします。
sudo apt install gcc
これで、gcc がインストールできます。
cat /proc/version
とgcc --version
のバージョンが一致しているか確認します。
これで、無事に NVIDIA Driver がインストールできました。
まとめ
CUDA 環境の構築に慣れはこない