概要
nvidia-smi を実行するとこれまで発生しなかった下記のようなエラーが発生した。
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
環境
- OS: Ubuntu22.04
- グラフィックボード: GeForce RTX 2060 SUPER(12G)
原因
再起動したところ下記のようにエラー内容が変わった
$ 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"がいつの間にかアップグレードされ、グラフィックボードがサポートしていないバージョンになったと考えられる。
ログを確認する。
$cat /var/log/apt/history.log |grep Upgrade|grep nvidia
Upgrade: libnvidia-common-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-fbc1-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-fbc1-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-gl-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-gl-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-extra-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-compute-utils-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-dkms-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-driver-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-encode-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-encode-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-utils-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), xserver-xorg-video-nvidia-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-decode-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-decode-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-kernel-common-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-cfg1-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-kernel-source-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-compute-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-compute-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1)
ログから、今回の場合は"nvidia-driver530"から"nvidia-driver535"にアップグレードされていることがわかりこれが原因だと考えられる。
解決方法
アンインストール
$sudo apt --fix-broken install
$sudo apt remove *nvidia* --purge
nvidia-driver の再インストール
$sudo apt install nvidia-driver-535
$sudo reboot
再起動後、正常に動作するようになる。
(Driver versionが 535.129.03 以降であればOK)
$nvidia-smi
Sat Oct 7 18:24:06 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| 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 NVIDIA GeForce RTX 2060 On | 00000000:01:00.0 On | N/A |
| 41% 35C P2 39W / 184W | 690MiB / 12288MiB | 3% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
おまけ: nvidia-toolkit の再インストール
NVIDIA Container Toolkit も同時にアンインストールしてしまっているので、公式を参考にで再インストールする。
$curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \
&& \
sudo apt-get update
$sudo apt-get install -y nvidia-container-toolkit
下記のように出力された場合は "y" を入力する。
ファイル'/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg'は既に存在します。 上書きしますか? (y/N) y
再起動する
$sudo reboot
おまけ 自動更新の無効化
【Ubuntu】パッケージの自動更新を無効にするの記事を参考に自動更新を無効にしました。
sudo 権限で"/etc/apt/apt.conf.d/20auto-upgrades"を開き、下記のように変更することで、自動アップグレードを防ぐことができます。(他のツールも手動アップグレードが必要になるので注意してください)
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "0";
2行目のUnattended-Upgradeが'1'の場合に、自動でパッケージがアップグレードがされるので'0'に変更しております。
参考
本記事は下記のサイトを参考にしました。
まとめ
本記事では "Failed to initialize NVML: Driver/library version mismatch" というエラーが発生した際の対処方法のメモを記載しました。