カーネルモジュールがオープンソースに
NVIDIAは同社製のGPUドライバーのカーネルモジュールをオープンソース化しました。”ついに”なのか”やっと”なのか、人によって感じ方は異なるかと思います。
IntelやAMDのオープンソースに対する取り組みと、今までのNVIDIAのオープンソースに対する取り組みを対照的に見てきた方からすると、まずは驚きのほうが大きいかもしれませんね。
GPUドライバー
NVIDIAのGPUドライバーは、カーネルスペースで動作するカーネルモジュールと、ユーザースペースで動作するユーザーモードドライバー(コンポーネント/スタック)、そしてファームウェアに別れています。カーネルモジュールがオープンソースになった
今回オープンソースになったのはカーネルスペースで動作するカーネルモジュールです。ユーザースペースで動作するユーザーモードドライバーとGPUの利用に必要なファームウェアは、従来どおりプロプライエタリー(クローズドソース)なままです。
ですのでNVIDIAのGPUドライバーを利用する際は、プロプライエタリーなユーザーモードドライバーとファームウェア、そしてオープンソースのカーネルモジュールを組み合わせて利用することになります。
ソースコード
ソースコードは以下で参照できます。ライセンスはGPL/MITのデュアルライセンスです。
また修正や改善といったパッチの提供も適切な手続きを経て取り込んでいくとのことです。
ドライバーのリリースポリシーは、以下を参照してください。
引き続きプロプライエタリーなカーネルモジュールも提供される
今回カーネルモジュールがオープンソース化されましたが、引き続き従来のプロプライエタリーなカーネルモジュールも提供されます。
ただし将来的にプロプライエタリーなカーネルモジュールは、オープンソースのカーネルモジュールに置き換えられます。
ユーザーがどのようにして選択するのかは、各Linuxディストリビューションやインストーラー次第で決まるでしょう。
これらのGPUでオープンソース版カーネルモジュールは、本番環境で利用可能な品質になっています。
「NVIDIA GeForce GTX 1650」以降といえば分かりやすいでしょうか。
LinuxデスクトップやCUDA、Vulkan、OpenGL、OptiX、X11といった機能に対応していますが、その一方でG-SYNCやQuadro Sync、SLI、Stereo、X11での画面回転、YUV 4:2:0(Turing)、電力管理、vGPUといった機能はサポートされていません。
これらの機能は今後の改善でサポートされる予定です。
しかし機能としては利用可能であり、オープンソース版カーネルモジュールに「NVreg_OpenRmEnableUnsupportedGpus」パラメーターを指定すれば、非サポートの機能も使えるようになります。
詳細は以下のドキュメントを参照してください。
これはオープンソース版カーネルモジュールがTuringで導入された「GPU System Processor (GSP)」に依存しているためです。
そのうちUbuntu(Canonical)から準備が整い次第、本件に関する公式アナウンスが出るのではないでしょうか。
まずはその大きな第一歩といったところでしょうか。
今後の展開が楽しみですね。
ただし将来的にプロプライエタリーなカーネルモジュールは、オープンソースのカーネルモジュールに置き換えられます。
オープンかプロプライエタリーを選ぶ
というわけでユーザーはNVIDIAのGPUドライバーをインストールする際、オープンソースのカーネルモジュールかプロプライエタリーなカーネルモジュールのどちらかを選ぶことになります。ユーザーがどのようにして選択するのかは、各Linuxディストリビューションやインストーラー次第で決まるでしょう。
ドライバーバージョンと現在のサポート状況
現状のオープンソース版カーネルモジュールのドライバーバージョンは「R515」です。データセンター向けのNVIDIA GPU
データセンター向けのNVIDIA GPUでは、「NVIDIA Turing」及び「NVIDIA Ampere」アーキテクチャーに対応したNVIDIA GPUがサポート対象です。これらのGPUでオープンソース版カーネルモジュールは、本番環境で利用可能な品質になっています。
PCやワークステーション向けのNVIDIA GPU
一方でGeForceなどPCやワークステーション向けのNVIDIA GPUでも「NVIDIA Turing」及び「NVIDIA Ampere」アーキテクチャーに対応したNVIDIA GPUがサポート対象になっています。「NVIDIA GeForce GTX 1650」以降といえば分かりやすいでしょうか。
現状α版レベルの品質である
現状これらのGPU向けオープンソース版カーネルモジュールは、α版レベルの品質になっています。LinuxデスクトップやCUDA、Vulkan、OpenGL、OptiX、X11といった機能に対応していますが、その一方でG-SYNCやQuadro Sync、SLI、Stereo、X11での画面回転、YUV 4:2:0(Turing)、電力管理、vGPUといった機能はサポートされていません。
これらの機能は今後の改善でサポートされる予定です。
しかし機能としては利用可能であり、オープンソース版カーネルモジュールに「NVreg_OpenRmEnableUnsupportedGpus」パラメーターを指定すれば、非サポートの機能も使えるようになります。
詳細は以下のドキュメントを参照してください。
Turingより前のアーキテクチャーはサポートされない
オープンソース版カーネルモジュールは、Turingより前のアーキテクチャーを採用しているNVIDIA GPUには対応しません。これはオープンソース版カーネルモジュールがTuringで導入された「GPU System Processor (GSP)」に依存しているためです。
今後もサポート改善が続く
今後もサポートの改善が継続的に行われ、Turing以降のNVIDIA GPUのサポート拡大や機能のサポート充実など、オープンソース版カーネルモジュールが改善されていきます。さっそくUbuntu 22.04 LTSでパッケージ化作業始まる
「Ubuntu」プロジェクトの後ろ盾となっている「Canonical」では今回のアナウンスを受け、さっそくオープンソース版カーネルモジュールのパッケージ化作業に取り組んでいます。そのうちUbuntu(Canonical)から準備が整い次第、本件に関する公式アナウンスが出るのではないでしょうか。
LinuxにおけるNVIDIA GPUのサポート改善に大きくつながる
ユーザーモードドライバーは従来どおりプロプライエタリーなままとは言え、カーネルモジュールがオープンソースになったことで、「Ubuntu」含めLinuxにおけるNVIDIA GPUのサポート改善に大きくつながります。まずはその大きな第一歩といったところでしょうか。
今後の展開が楽しみですね。