概要
昨年末に以下の記事でubuntu-drivers devices
コマンドでrecommended
表示が付いたNVIDIA製のGPUドライバーをUbuntuにインストールするとGPUが正常に認識されず、nvidia-smi
コマンドを実行すると「No devices were found.」とメッセージが出力される問題が発生すること、そしてその対処方法について投稿しました。
しかし、この方法はあくまでその場しのぎの対処方法であり、根本的な問題解決とはなっていませんでした。そこで筆者は根本原因の特定を行うため、Linuxに詳しい友人の協力を得て、根本原因の特定する調査を行いました。結果として、根本原因の特定と、解決方法を解明しましたが、現状open版のGPUドライバーはrecommended
にはなっていません。しかし、open版ドライバーには新機能が実装されていてそれを試したい時にこの方法を用いれば事故にならないということを投稿しようと思ったのですが。。。
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.0/0000:03:01.0/0000:05:00.0/0000:06:01.0/0000:07:00.0 ==
modalias : pci:v000010DEd00002504sv00001043sd00008810bc03sc00i00
vendor : NVIDIA Corporation
model : GA106 [GeForce RTX 3060 Lite Hash Rate]
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-535 - distro non-free
driver : nvidia-driver-525-open - distro non-free
driver : nvidia-driver-545-open - third-party non-free
driver : nvidia-driver-545 - third-party non-free recommended
driver : nvidia-driver-525-server - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-525 - distro non-free
driver : nvidia-driver-535-open - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
open版GPUドライバーのインストール
まずはaptを用いて、open版GPUドライバーをインストールします。nvidia-driver-545-open
をインストールします。
sudo apt install -y nvidia-driver-545-open
インストール後、再起動します。
sudo reboot
GPU認識状況の確認
nvidia-smi
コマンドでGPUが認識出来ているか確認します。本来ならここでエラーが発生します。
$ nvidia-smi
Tue Oct 31 23:32:28 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.06 Driver Version: 545.23.06 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| 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 3060 Off | 00000000:07:00.0 Off | N/A |
| 40% 27C P8 6W / 170W | 5MiB / 12288MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
何と。。。open版のドライバーでもエラーが発生しません。
kernelモジュールの設定が追加されている
以下の参考情報を参照すると従来は/etc/modprobe.d/
配下に設定ファイル(例えばnvidia-driver.conf)を格納し、以下の内容を追加する必要が有りました。
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
参考情報
しかし、今回エラーが発生せずドライバーが認識されました。因みに筆者は以前以下のコミュニティへの投稿でopen版が推奨される上にエラーが発生して認識されない点について質問していました。この時は塩対応だったのですが、ubuntu-driver devices
コマンドで推奨されなくなった上に、仮にインストールしたとしてもエラーなく認識される様になりました。
まとめ
今回GPUドライバーのトラブルシューティングの記事を投稿するつもりが肩透かしとなってしまいました。しかし、そもそもGPUベンダーが公開しているドライバーをOS側から認識させるために、kernelモジュール用の設定をユーザー側で実施しなければならないという仕様はあまりにもユーザーフレンドリーでは無いやり方だったので、そこが改善されたということが分かったのは良かったと思いました。