はじめに
nvidia-smi
コマンドで、
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
NVML library version: XXX
というエラーが出たときの解決ログです。
まず、再起動などの一般的な対処法を試してみてください。参考記事として、
が挙げられます。もし再起動だけでは解決しない場合、以下に筆者が遭遇し解決した具体的な状況と対処法を紹介します。
なお、筆者の環境はUbuntu 22.04
です。
考えられる原因
このnvidia-smi
のエラーの原因の一つとして、NVML(NVIDIA Management Library)と NVRM(NVIDIA Resource Manager)のバージョンの不一致が挙げられます。これらのバージョンは、それぞれ以下のコマンドで確認できます。
$ cat /sys/module/nvidia/version
$ cat /proc/driver/nvidia/version
これらのバージョンが異なる場合に、mismatchエラーが発生する可能性があります。
ここで、NVMLとNVRMのそれぞれの役割について簡単に説明します。
-
NVML(NVIDIA Management Library):
NVIDIA GPUの管理に使用されるライブラリで、GPUの情報の取得や操作を行います。/sys/module/nvidia/version
で確認できます。 -
NVRM(NVIDIA Resource Manager):
NVIDIA GPUのリソースを管理するカーネルモジュールで、GPUのドライバーとして機能します。/proc/driver/nvidia/version
で確認できます。
バージョンが異なる場合に解決方法
以下は、NVML と NVRM のバージョンが異なる場合の解決手順です。筆者の環境での実際のログを交えて説明します。
まず、NVMLとNVRMのバージョンの確認をします。
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
NVML library version: 535.129
$ cat /sys/module/nvidia/version
535.129.03
$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 520.61.05 Thu Sep 29 05:30:25 UTC 2022
GCC version: gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
上記の結果から、NVMLのバージョンが535.129.03で、NVRMのバージョンが520.61.05と異なっていることが分かります。
次に、以下のコマンドでnvidiaとcudaをアンインストールし、再びインストールします。
$ sudo apt purge nvidia-*
$ sudo apt purge cuda-*
$ sudo apt install nvidia-driver-535 nvidia-dkms-535
$ sudo sh cuda_11.8.0_520.61.05_linux.run
そして、これらのコマンドを実行後に再起動すると、NVRMとNVMLのバージョンが一致し、nvidia-smi
が正常に動作するようになりました。
(※上記は参考までに、nvidia driverやcudaは環境に合わせたものに適宜書き換えてください。Ubuntu: NVIDIAのドライバはどれをインスールすればよいのだ?によると、ubuntu-drivers
を実行し、recommended
が付いたものが良いとされています。)
$ cat /sys/module/nvidia/version
535.129.03
$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 535.129.03 Thu Oct 19 18:56:32 UTC 2023
GCC version: gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
まとめ
この記事では、nvidia-smi
で発生するエラーの解決として、NVMLとNVRMのバージョンが異なる場合の解決法について紹介しました。あくまで筆者の環境での話ですが、対処法としてアンインストールと再インストールを行うことで直ることを確認しました。
参考資料
- Stack OVerflow: Nvidia NVML Driver/library version mismatch: dkms, modules, drivers and modinfo versions
- Stack OVerflow: Nvidia NVML Driver/library version mismatch [closed]
- Stack OVerflow: How to fix "NVRM: API mismatch" between client version and kernel module version when installing Nvidia drivers for a GTX 560 Ti in Ubuntu 20.04?