NVIDIA、オープンソース Linux GPU カーネルモジュールへ完全移行
(developer.nvidia.com)- NVIDIAは2022年5月、R515ドライバでLinux GPUカーネルモジュールをGPLおよびMITのデュアルライセンスでオープンソースとして公開した
- 当時はデータセンター向けコンピューティングGPUが対象で、GeForceとWorkstation GPUはアルファ段階だった
- その後のリリースでは、より強力で完全な機能を備えたGeForceおよびWorkstation向けLinuxサポートが提供され、NVIDIAのオープンカーネルモジュールが最終的にクローズドドライバを置き換えると発表していた
- それから2年が経過した現在、オープンソースGPUカーネルモジュールで同等またはそれ以上のアプリケーション性能を達成し、次のような重要な新機能が追加された:
- 異種メモリ管理(HMM)のサポート
- コンフィデンシャルコンピューティング
- Graceプラットフォームのコヒーレントメモリアーキテクチャ
- そのほか多数
- 現時点でオープンソースGPUカーネルモジュールへ完全移行するのが適切な段階に達しており、今後のR560ドライバリリースでこの変更を適用する予定
対応GPU
- すべてのGPUがオープンソースGPUカーネルモジュールと互換性があるわけではない
- NVIDIA Grace HopperやNVIDIA Blackwellのような最新プラットフォームでは、必ずオープンソースGPUカーネルモジュールを使用する必要があり、これらのプラットフォームではプロプライエタリドライバはサポートされない
- Turing、Ampere、Ada Lovelace、Hopperアーキテクチャの新しいGPUでは、オープンソースGPUカーネルモジュールへの移行が推奨される
- Maxwell、Pascal、Voltaアーキテクチャの旧世代GPUはオープンソースGPUカーネルモジュールと互換性がないため、引き続きNVIDIAのプロプライエタリドライバを使用する
- 同一システム内で旧世代GPUと新世代GPUが混在する構成では、引き続きプロプライエタリドライバを使用する
- NVIDIAは、どのドライバを選ぶべきか案内する新しい検出アシスタントスクリプトを提供している。詳細はこの投稿の後半にある「インストールアシスタントスクリプトの使用」セクションを参照
インストーラの変更点
- 一般に、あらゆるインストール方法でインストールされるドライバのデフォルト版は、プロプライエタリドライバからオープンソースドライバへ移行しつつある。特に注意が必要なシナリオがいくつかある:
- CUDAメタパッケージを含むパッケージマネージャ
- 実行ファイル
- インストールアシスタントスクリプト
- パッケージマネージャの詳細
- Windows Subsystem for Linux
- CUDAツールキット
CUDAメタパッケージを含むパッケージマネージャの使用
- パッケージマネージャ(runファイルではない)を使ってCUDAツールキットをインストールする場合、インストール用メタパッケージが存在し、通常はこれが使われる。最上位の
cudaパッケージをインストールすると、CUDAツールキットと、それに対応するドライバリリースの組み合わせがインストールされる
実行ファイルの使用
- CUDAまたはNVIDIAドライバを
.runファイルでインストールする場合、インストーラがハードウェアを照会し、システムに最適なドライバを自動的にインストールする。UIトグルを使って、プロプライエタリドライバとオープンソースドライバのどちらかを選ぶこともできる
インストールアシスタントスクリプトの使用
- 前述のとおり、システムのGPUにどのドライバを選ぶべきか確信が持てない場合に備え、NVIDIAは選択プロセスを案内するアシスタントスクリプトを作成した
- 使用するには、まず
nvidia-driver-assistantパッケージをパッケージマネージャでインストールし、その後スクリプトを実行すればよい
パッケージマネージャの詳細
- 一貫した体験のため、NVIDIAはCUDAツールキットとドライバのインストールにパッケージマネージャを使うことを推奨している。ただし、各種ディストリビューションで使われる具体的なパッケージ管理システムやパッケージ構成は、ディストリビューションごとに異なる場合がある
- このセクションでは、各種プラットフォームに必要な具体的な詳細、注意事項、または移行手順について説明している
Windows Subsystem for Linux
- Windows Subsystem for Linux(WSL)は、ホストWindows OSのNVIDIAカーネルドライバを使用する。このプラットフォームに特定のドライバをインストールしてはならない。WSLを使用している場合、変更や対応は不要
CUDAツールキット
- CUDAツールキットのインストール自体は、パッケージマネージャ経由でも変更はない。次のコマンドを実行すればよい:
$ sudo apt-get/dnf/zypper install cuda-toolkit
詳細情報
- NVIDIAドライバまたはCUDAツールキットのインストール方法の詳細については、CUDAインストールガイドの「ドライバのインストール」セクションを参照
GN⁺の見解
-
NVIDIAがGPUカーネルモジュールをオープンソースとして提供することは、GPUコンピューティングのエコシステムにとって非常に前向きな変化である。これにより、ユーザーと開発者はNVIDIA GPUドライバに関連する問題をより容易にデバッグし、解決できるようになる
-
オープンソース化により、HPC、AI、機械学習などの分野でNVIDIA GPUを活用するユーザーに、より大きな柔軟性と透明性がもたらされる。特に企業環境でNVIDIA GPUソリューションを導入する際のセキュリティや安定性への懸念を和らげるのに役立つだろう
-
ただし、オープンソース化の過程で、既存のプロプライエタリドライバベースのアプリケーションとの互換性問題が発生する可能性がある。NVIDIAはこれに対して明確なガイドラインと移行パスを提示する必要があるだろう
-
AMDのROCmのような競合するオープンソースGPUコンピューティングプラットフォームとの比較も興味深いテーマになり得る。NVIDIAのオープンソース化によって、GPUコンピューティング分野での競争はさらに激化するとみられる
-
今後、NVIDIAがコミュニティからの貢献を積極的に受け入れ、オープンソースGPUカーネルモジュールの性能と安定性を継続的に改善していくことが期待される。これはGPUコンピューティングの大衆化とイノベーションの加速に貢献するだろう
4件のコメント
リーナス・トーバルズ: NVIDIA! ダメ! クソったれ!
強烈なひと言…… F*ck……!
そうなるかもですね(笑)
Hacker Newsの意見
数年前にNvidiaが深刻なハッキング被害を受けたことを覚えている
Nvidiaのカーネルモジュールは2つの構成要素に分かれている
.runインストールパッケージに含まれる場合、OS-agnostic 構成要素はバイナリとして提供されるNvidiaでSwayとWaylandを使うのがあまりにも難しかったのでAMDに乗り換えた
現在LinuxにおけるNvidiaドライバの状況がどうなっているのか気になる
Nvidiaは完全にオープンソースのGPUカーネルモジュールへ移行した
この変化によってLinuxでのNvidiaドライバのインストールやアップグレードがもっと簡単になることを願う
tarballを投げつけて「取ってこい!」と言うのでは意味がない
細部を注意深く読む懐疑的な人間として、これは良い動きだと思う
Linusがカメラを見ながらNvidiaに中指を立てたときのことを覚えている
カーネルモジュールだけでも何かを提供したことには意味がある