|
「NVIDIA は、我々がこれまで出会った中で最も厄介なハードウェアベンダーの一つだ。」これは、Linux カーネルのチーフアーキテクトである Linus Torvalds 氏が 10 年前に述べた言葉です。 当時、リーナス氏はフィンランドのヘルシンキにあるアアルト大学で開催された学生・開発者向けカンファレンスでインタビューを受けていました。カンファレンス中、ある聴衆が、統合型グラフィックスカードとNVIDIAのディスクリートグラフィックカードの両方を搭載したノートパソコンを購入したが、Linux上でNVIDIA Optimusテクノロジー(NVIDIA Optimusは、ノートパソコンのディスクリートグラフィックカードと統合型グラフィックスカードをシームレスかつ自動でリアルタイムに切り替えることができる、NVIDIAが開発したデュアルグラフィック切り替えテクノロジー)を使用して切り替える際にドライバーの問題が発生していると話し、リーナス氏に意見を求めました。この状況下で、リーナス氏は前述の発言をした後、カメラの方を向き、中指を立てて罵声を浴びせました。 オープンソース・オペレーティング・システムLinuxの開発者であるリーナス・トーバルズ氏は、常にオープンソースの熱心な支持者であり、NVIDIAが自社のドライバーをオープンソース化することを一貫して期待してきました。そして今、ついにその日が来ました。 ちょうど今、Nvidia は GPU カーネル ドライバー モジュールをオープンソース化したと発表し、開発者コミュニティに大きな話題を巻き起こしています。 あるコメンテーターは、「これは、過去 10 年間のオープンソース オペレーティング システムのハードウェア サポートにおける最大のイベントの 1 つです」と述べました。 冗談めかして「一生に一度の」瞬間と呼ぶ人もいた。 このオープンソースリリースは、R515ドライババージョンからGPL/MITデュアルライセンスを採用しています。開発者は、これらのカーネルモジュールのソースコードをGitHubのNVIDIA Open GPU Kernel Modulesリポジトリで入手できます: https://github.com/NVIDIA/open-gpu-kernel-modules NVIDIAは、今回のオープンソース化により、Linuxシステム上でNVIDIA GPUを使用する際のユーザーエクスペリエンスが大幅に向上し、オペレーティングシステムとの緊密な統合が実現し、開発者によるデバッグ、統合、フィードバックが容易になると述べています。Linuxディストリビューションプロバイダーにとっては、オープンソースカーネルモジュールによって使いやすさが向上し、NVIDIA GPUドライバーの署名と配布におけるユーザーエクスペリエンスが向上されます。CanonicalとSUSEは、これらのオープンソースカーネルモジュールをUbuntuおよびSUSE Linux Enterpriseディストリビューションにすぐにパッケージ化できます。 開発者はコードパスをトレースすることで、カーネルイベントスケジューリングがワークロードとどのように相互作用するかを理解でき、根本原因のデバッグを迅速化できます。さらに、エンタープライズソフトウェア開発者は、プロジェクトに合わせてカスタマイズされたLinuxカーネルにドライバーをシームレスに統合できるようになります。これにより、NVIDIA GPUドライバーの品質とセキュリティがさらに向上し、Linuxエンドユーザーコミュニティからのフィードバックも得られます。 サポートされている機能このGPUカーネルモジュールリリースの最初のバージョンはR515です。ソースコードの公開に加え、ドライバーの完全なビルドとパッケージも提供されます。このコードは、NVIDIA TuringおよびNVIDIA AmpereアーキテクチャファミリーのデータセンターGPU向けに、すぐに実稼働環境で使用できます。これは、NVIDIAが過去1年間にわたり段階的に展開してきたGSPドライバーアーキテクチャのおかげであり、NVIDIAのお客様の移行を容易にすることを目的としています。開発チームは、様々なワークロードをテストし、機能とパフォーマンスが独自のカーネルモードドライバーと同等であることを確認することに注力しました。 将来的には、HMM などの機能は、NVIDIA Hopper アーキテクチャ上の機密コンピューティングの基本的なコンポーネントになるでしょう。 NVIDIA によるこのオープンソース版は、GeForce およびワークステーション GPU を幅広くサポートしています。GeForce およびワークステーション ユーザーは、NVIDIA Turing および NVIDIA Ampere アーキテクチャ GPU でこのドライバを使用することで、Linux デスクトップを実行し、マルチモニター設定、G-SYNC、Vulkan および NVIDIA OptiX の NVIDIA RTX レイトレーシングなどの機能を利用できます。ユーザーは、ドキュメントで強調表示されているカーネルモジュールパラメータ NVreg_EnableUnsupportedGpus の使用をオプトインできます。今後のバージョンでは、より堅牢で機能豊富な GeForce およびワークステーションのサポートがリリースされる予定であり、最終的には NVIDIA オープンソースカーネルモジュールがクローズドソースドライバに取って代わる予定です。 TuringおよびAmpere GPUをお持ちのお客様は、インストールするモジュールを選択できます。Turing以前のハードウェアをご利用のお客様は、引き続きクローズドソースモジュールをご利用いただけます。 オープンソースのカーネルモードドライバーは、CUDA、OpenGL、Vulkanなど、同じファームウェアとユーザーモードスタックを使用します。ただし、ドライバースタックのすべてのコンポーネントは、ディストリビューション内のバージョンと互換性がある必要があります。例えば、ユーザーは、以前のバージョンまたは将来のバージョンのユーザーモードスタックを使用してソースコードをリリースしたり、ビルドしたり、実行したりすることはできません。 NVIDIA のオープンソース ドライバーはなぜ Linux にとってそれほど重要なのでしょうか?Nvidiaがオープンソースリリースを発表した直後、Red HatのシニアデスクトップマネージャーであるChristian FK Schaller氏が「なぜNvidiaのオープンソースドライバーリリースはLinuxにとって重要なのか?」と題したブログ記事を公開し、NvidiaのオープンソースリリースがLinuxに与える影響について詳細な分析を行いました。彼のコメントを見てみましょう。 新しいドライバーには何が含まれていますか?NVIDIAのリリースはオフソースのカーネルドライバであり、データセンターGPUにおけるCUDAユースケースのサポートがテストされています。ディスプレイをサポートするコードが含まれていますが、テストはまだ完了していません。さらに、これはカーネル部分のみであり、最新のグラフィックスドライバの大部分はファームウェアやユーザー空間コンポーネントに含まれていますが、これらは依然としてクローズドソースのままです。 ただし、このオープンソース化は、Nvidia が Linux カーネルで GPL のみの API を使用できるカーネル ドライバーをリリースしたことを意味します。ただし、この初期バージョンでは、古いドライバーが使用していなかった API は使用されません。 このドライバーは NVIDIA Turing GPU 以降のバージョンのみをサポートしているため、2018 年以前にリリースされた GPU では使用できません。そのため、ほとんどの Linux デスクトップ ユーザーはすぐには利用できません。 これは Nvidia バイナリ ドライバーにとって何を意味しますか?Turing以前のチップをベースにしたNVIDIA GPUは、引き続きNVIDIAのバイナリカーネルドライバを必要とします。Turing以降のGPUをご利用のユーザーであっても、オープンソースカーネルモジュールが完全にテストされ、ユースケースを実証できるまで拡張されるまで、これらのバイナリドライバを引き続き使用する必要がある可能性があります。同様に、バイナリドライバの大部分はファームウェアとユーザー空間の両方に存在します。 これはNouveauにとって何を意味するのでしょうか?Nouveauは、現在のNVIDIA GPU用のカーネル内グラフィックドライバです。完全に機能しますが、リクロックができないため、バイナリドライバの完全なパフォーマンスをユーザーに提供することはできません。 Linuxカーネルは、同一ハードウェアに対して複数のドライバを許可しません。そのため、新しいNVIDIAカーネルドライバを現在のドライバに組み込むには、別のハードウェアセットを終了するか、少なくとも制限する必要があります。現在のドライバはNouveauです。 バイナリドライバと同様に、Nouveauの大部分はカーネルではなく、Mesaのユーザー空間セグメントと、NVIDIAが現在リリースしているNouveau専用ファームウェアに含まれています。そのため、NVIDIAはTuring以前のハードウェアをサポートするためにNouveauを保持します。 NVIDIAバイナリドライバとMesaでカーネルドライバを共有できる方法を模索していますが、完全な実現には数年かかる可能性があります。現在、NVIDIAユーザー空間とMesaユーザー空間の両方のニーズを満たすように設計された、全く新しいドライバのリリースを予定しています。このプロセスにおいて、NVIDIAのエンジニアと協力したいと考えています。 要約すると、オープンソース コミュニティにとって、これは、GPU クロックを変更して研究者が NVIDIA グラフィック カードに期待するパフォーマンスを提供できるカーネル ドライバーとファームウェアが得られることを意味します。また、初日から次世代の NVIDIA ハードウェア ファームウェアとカーネルのアップデートにアクセスできるオープンソース ドライバーが得られることを意味します。さらに、Linux カーネルで GPL のみの API を使い始めることができることを意味します。 これは、Fedora や RHEL などの Linux ディストリビューションにとって何を意味するのでしょうか?現実的には、NVIDIA のオープンソース GPU カーネルは、近い将来、Fedora や RHEL などの Linux ディストリビューションに大きな影響を与えることはないと思われます。しかし、このオープンソースのアプローチは、NVIDIA ハードウェアのサポートを根本的に簡素化する手段となるため、長期的には Intel や AMD と同等のエクスペリエンスを NVIDIA ハードウェアでも、すぐに使える機能で実現できることを期待しています。 NVIDIAには、今後取り組むべき課題が山積しています。この新しいドライバを、コンピューティングとグラフィックスアプリケーションにおいてより完成度の高いものにする必要があります。私たちがすべきことは、将来的に統合カーネルドライバの計画を策定し、その計画に基づいて、コミュニティとNVIDIAの双方にとって有効なモデル、例えばMesa Vulkanドライバのような機能を追加するモデルを共同で開発することです。 |