パート01 背景1.1 GPU アプリケーションのシナリオGPU (グラフィックス プロセッシング ユニット) は、もともとコンピューター グラフィックスのタスクを処理するために設計されましたが、現在ではその応用シナリオは他の多くの分野に拡大しています。以下に、GPU アプリケーションのシナリオをいくつか示します。 ゲームと視覚効果: GPU はもともとグラフィック レンダリングを高速化するために設計されたため、ゲームや視覚効果で優れた用途があります。 GPU は大量のデータを迅速に処理し、複雑な 3 次元グラフィックスを生成して、プレイヤーによりリアルなゲーム体験を提供します。 機械学習とディープラーニング: 近年、人工知能の分野で GPU がますます使用されるようになっています。ディープラーニング モデルでは大量の並列コンピューティングと浮動小数点演算が必要となるため、GPU はこのタスクに適しています。 GPU を使用して機械学習のトレーニング プロセスを高速化すると、多くの時間を節約できます。 科学的シミュレーションとデータ分析: 多くの科学的コンピューティング タスクでは、大量のデータの処理と複雑な数学演算の実行が必要です。 GPU は、分子動力学、流体力学、天文学、地球科学などの分野におけるシミュレーションや分析において重要な役割を果たすことができます。 画像およびビデオ処理: GPU は画像およびビデオ処理の分野でも広く使用されています。たとえば、リアルタイムのビデオエンコードとデコード、画像のノイズ除去、画像の強化、画像認識などのタスクに使用できます。 仮想現実と拡張現実: GPU は、仮想現実 (VR) と拡張現実 (AR) の分野でも優れた用途があります。高品質の仮想環境をリアルタイムでレンダリングし、ユーザーに没入感のある体験を提供します。 技術の発展に伴い、GPU の応用分野は拡大し続けることが予想されます。 1.2 GPU仮想化の利点GPU 仮想化は、物理 GPU のコンピューティング リソースとメモリ リソースを複数の仮想環境で共有するテクノロジです。主な利点は次のとおりです。 リソース共有: GPU 仮想化により、物理 GPU のコンピューティング リソースとメモリ リソースを複数の仮想環境で共有できるようになり、GPU の使用効率が向上します。 弾力的な拡張: GPU 仮想化により、仮想 GPU のコンピューティング リソースとメモリ リソースをアプリケーションのニーズに応じて動的に調整できるため、リソースの弾力的な拡張が実現します。 コスト効率: GPU 仮想化により、物理 GPU を複数の仮想環境間で共有できるようになり、複数の独立した GPU を購入して保守する必要性が減るため、ハードウェアへの投資と保守コストを削減できます。 分離: GPU 仮想化は優れた分離を提供し、仮想環境間のセキュリティと独立性を保証します。これは、異なるテナント間のデータとコンピューティングの分離を保証するため、マルチテナント クラウド コンピューティング環境では特に重要です。 柔軟な展開: GPU 仮想化により、さまざまなパフォーマンス要件を満たすために、さまざまな物理ハードウェア上に仮想環境を柔軟に展開できます。つまり、ユーザーは既存の仮想環境との互換性の問題を考慮することなく、ニーズに応じて適切な GPU ハードウェアを選択できます。 パート02 関連する基本概念GPU 仮想化を理解しやすくするために、まず、I/O バス、GPU API、GPU ワークフローなどの関連する基本概念を紹介します。 2.1 I/Oバス写真 現代のコンピュータには、インターフェース プロトコルのパフォーマンスに基づいて階層化された I/O バスがあります。 上の図に示すように、SCSI (Small Computer System Interface)、SATA (Serial AT Attachment)、または USB (Universal Serial Bus) プロトコルを使用する I/O デバイスなど、比較的低速の周辺 I/O デバイスは、周辺 I/O バスを介してシステムに接続されます。グラフィック カードやネットワーク カードなどの高性能 I/O デバイスは、一般的な I/O バスを介してシステムに接続されます。多くの最新システムでは、このバスは PCIe (Peripheral Component Interconnect Express) またはその派生です。 2.2 GPU APIさまざまな機能をサポートするために、GPU はさまざまな種類の API を提供し、開発者がアプリケーションで GPU の強力な機能を使用できるようにします。これらの API は、グラフィックス レンダリング、一般的なコンピューティング、オーディオとビデオのエンコードとデコードの 3 つのカテゴリに分類できます。 グラフィックス レンダリング API は、リアルタイム 3D グラフィックスやアニメーションなどのグラフィックス レンダリング タスクを処理するために使用されます。これらの API は、開発者がプログラム内で 3D オブジェクト、テクスチャ、シェーダーを作成および操作できるようにする一連の関数とインターフェースを提供します。これらの API は、ゲームや 3D モデリング ソフトウェアでよく使用されます。主なレンダリング API は次のとおりです。OpenGL (Open Graphics Library): 2D および 3D グラフィックス レンダリング機能を提供するクロスプラットフォーム グラフィックス プログラミング インターフェイス。Vulkan: OpenGL に似たクロスプラットフォーム 3D グラフィックスおよびコンピューティング API ですが、低レベルのハードウェア制御と高いパフォーマンスを提供します。DirectX: Windows プラットフォームで 3D グラフィックス レンダリングを処理するための、Microsoft によって開発された一連の API (Direct3D を含む)。Metal: Apple によって開発されたグラフィックスおよびコンピューティング API で、iOS および macOS プラットフォーム専用に設計されています。 一般的なコンピューティング API を使用すると、開発者はグラフィックス レンダリングだけでなく、一般的なコンピューティング タスクに GPU を使用できます。これらのタスクには、物理シミュレーション、機械学習、画像処理などが含まれる場合があります。一般的なコンピューティング API は、GPU 上で高性能な並列コンピューティングを実現するためのプログラミング モデルと最適化ツールを提供します。主な一般的なコンピューティング API は次のとおりです。CUDA (Compute Unified Device Architecture): NVIDIA が開発し、NVIDIA GPU 専用に設計された並列コンピューティング プラットフォームおよびプログラミング モデル。OpenCL (Open Computing Language): さまざまな種類のプロセッサ (GPU、CPU、その他のアクセラレータなど) で実行できるクロスプラットフォームの並列コンピューティング API。 オーディオおよびビデオ コーデック API は、オーディオおよびビデオ データのエンコードとデコードを処理するために使用されます。 GPU の並列処理能力を利用して、オーディオおよびビデオ データの圧縮と解凍を高速化します。主なオーディオおよびビデオ コーデック API は次のとおりです。NVENC/NVDEC: NVIDIA GPU 上のハードウェア アクセラレーション ビデオ エンコードおよびデコード API。H.264、HEVC、VP9 などの一般的なビデオ コーディング標準をサポートします。AMD VCE/UVD: AMD GPU 上のハードウェア アクセラレーション ビデオ エンコードおよびデコード API。一般的なビデオ コーディング標準をサポートします。Intel Quick Sync Video: Intel プロセッサ統合 GPU 上のハードウェア アクセラレーション ビデオ エンコードおよびデコード API。VideoToolbox: Apple プラットフォーム上のハードウェア アクセラレーション ビデオ エンコードおよびデコード フレームワーク。iOS および macOS デバイスをサポートします。 2.3 GPUワークフロー仮想化がない場合、レンダリングに関係する主要コンポーネントを下図に示します。 写真 一般的な GPU デバイスのワークフローは次のとおりです。 アプリケーションは、OpenGL や DirectX など、GPU でサポートされている API を呼び出します。 OpenGL または DirectX ライブラリ。レンダリング負荷をオペレーティング システム カーネル GPU ドライバーに送信します。 GPU ドライバーはそれを GPU ハードウェアに送信します。 GPU ハードウェアが動作を開始します。完了後、メモリに DMA し、CPU に割り込みを送信します。 CPU は割り込みハンドラー (GPU ドライバーが以前にオペレーティング システムに登録したもの) を見つけて呼び出します。 割り込みハンドラはどのレンダリング ロードが実行されたかを検出し、最後に GPU ドライバーが関連するアプリケーションを起動します。 パート 03 GPU 仮想化テクノロジー ソリューション3.1 PCIe パススルーPCIe パススルーは、仮想化ソフトウェアによるエミュレーションなしで、仮想マシン (VM) が物理ホスト上の PCIe デバイスに直接アクセスできるようにする仮想化テクノロジーです。 PCIe パススルーを使用すると、次の図に示すように、GPU デバイスを仮想マシンに直接割り当てることができます。 写真 パススルー モードは、パフォーマンスの低下が最小限で、ハードウェア ドライバーの変更を必要としないため、主要なパブリック クラウド ベンダーによって広く採用されています。パススルー モードでは、サポートできる GPU の数に制限はなく、GPU の機能も低下しないため、ほとんどの機能はパススルー モードでも変更なしでサポートできます。 ➪ パススルーモードには次の利点があります。 ①パフォーマンスの低下が小さい ②機能互換性が良好 ③技術がシンプルで、運用・保守コストが低く、GPUメーカーに依存しない。 ➪ ダイレクトモードには次の欠点があります。 1. ホットマイグレーションをサポートしていません。 2. 1:1 のみがサポートされ、GPU リソースの分離はサポートされません。 3.2 PCIe SR-IOVPCIe SR-IOV (Single Root Input/Output Virtualization) は、高いパフォーマンスを維持しながら PCIe デバイスを複数の仮想マシン間で共有できるようにする、より高度な仮想化テクノロジーです。これは、物理デバイス (PF) 上に複数の仮想機能 (VF) を作成することで実現されます。各仮想機能は仮想マシンに割り当てることができ、仮想マシンはこれらの仮想機能に直接アクセスして制御できるため、効率的な I/O 仮想化が実現します。 PCIe SR-IOV に基づく GPU 仮想化ソリューションは、基本的に物理 GPU グラフィックス カード デバイス (PF) を複数の仮想 (VF) グラフィックス カード デバイスに分割しますが、VF は PCIe 仕様に準拠したデバイスのままです。コアアーキテクチャは次のとおりです。 写真 SR-IOV ソリューションでは、PF を仮想化し、複数の VF に分割できます。 これに基づいて、SR-IOV には 3 つのアプリケーション シナリオがあります。 (1)ユーザーはHostOSベースのPFドライバを通じてPFを直接使用する。 (2)ユーザーはHostOSベースのVFドライバを介してVFを直接使用する。 (3)ユーザーはVFドライバを介してVM内のVFを使用する。 ➪ SR-IOV ソリューションの利点: ① 各 VF には独立した構成空間、MMIO、アドレス空間があるため、データのセキュリティが強化されます。 ② 1つのPCIeデバイスを複数のVMに提供する1:Nを真に実現します。 ➪ SR-IOV ソリューションの欠点: 1. 柔軟性が低く、きめ細かいセグメンテーションとスケジューリングを実行できない。 2. ホットマイグレーションはサポートされていません。 業界で SR-IOV をサポートするグラフィック カード: 1. AMD Radeon PRO V620: 1 枚のグラフィック カード PV は 12 個の VF への分割をサポートします。 2. Moore Thread MTT S3000: 1 枚のグラフィック カード PV で 32 個の VF の分離をサポートします。 3.3 API転送PCIe SR-IOV を待つ間に、API 転送に基づく GPU 仮想化ソリューションが業界に登場しました。 API 転送は、着信側と発信側に分かれています。両者は外部に同じインターフェイス (API) を提供します。着信側の API 実装は実際のレンダリングと計算処理ロジックであり、発信側の API 実装は転送のみで、着信側に転送します。そのコアアーキテクチャは次の図に示されています。 写真 GPU API レイヤー フォワーディングに関しては、業界には OpenGL 用の AWS Elastic GPU と OrionX、CUDA 用の Tencent vCUDA、バレンシア工科大学の rCUDA があり、GPU ドライバー レイヤー フォワーディングに関しては、CUDA 用の Alibaba Cloud cGPU と Tencent Cloud pGPU があります。 ➪ API転送ソリューションの利点: ①最高の柔軟性。 API 転送を通じてアプリケーションと GPU デバイスを分離した後、1 つの GPU デバイスをソフトウェアを通じて任意に N 台の VM にサービスを提供するように構成できます。また、柔軟な GPU リソースの拡張、縮小、移行も実現できます。 ②GPUハードウェアメーカーに依存しない。 ③仮想化環境に限定されません。 ➪ API 転送ソリューションの欠点: 1. 非常に複雑です。同じ機能に対して複数の API セット (レンダリング用の DirectX と OpenGL) があり、同じ API セットでもバージョンが異なる (DirectX 9 と DirectX 11 など) ため、互換性が非常に複雑になります。 2. 機能が不完全です。サポートされていないメディアコーデックなど。 3.4 制御されたパススルー制御されたパススルー ソリューションは Nvidia によって提案され、同社は Intel と共同で関連する mdev を Linux カーネル 4.0 に提出しました。制御されたパススルーは、パフォーマンスに影響を与える可能性のあるアクセスを GPU に直接渡し (ビデオ メモリなど)、パフォーマンスに関係のない機能部分 (CSR や一部の MMIO レジスタなど) をインターセプトし、それらを mdev モジュールでシミュレートします。これにより、システム レベルで複数の「一見」完全な GPU PCIe デバイス (つまり、ネイティブ GPU ドライバーもサポートできる vGPU) を確認できます。 写真 ➪ このソリューションの利点: ①1:Nの柔軟性を備え、 ②高性能 ③3Dレンダリング、一般的なコンピューティング、メディアのエンコードとデコードをサポートする完全な機能。 ➪ このソリューションの欠点: ホストマシンの GPU ドライバーは GPU をシミュレートすることと同等であり、GPU ハードウェアはオープンソースではないため、この部分を提供できるのは GPU メーカーのみとなります。 業界の制御されたパススルー実装には、Nvidia の vGPU、Intel の GVT-g、Moore's Threads の MT Mesh 2.0 (MTT S3000 グラフィックス カード) などがあります。 |
>>: 5 分間の技術講演 | 顔認識についてどれくらい知っていますか?
[[395543]] Python AI プロジェクトは、あらゆる形態や規模の企業の間で非常に人気...
[[388691]]被害の程度を軽減することは地震研究者にとって重要な目標です。破壊的な地震が発生し...
記事「バックプロパゲーションを使用した多層ニューラル ネットワークのトレーニングの原理」では、バック...
2017年、『エコノミスト』誌は、石油ではなくデータが世界で最も価値のある資源になったと宣言し、この...
[51CTO.com クイック翻訳] 難しいデータサイエンスを習得しなくても、機械学習の世界で成功で...
休暇で旅行するときは、写真を撮ることが必須です。しかし、景勝地で撮影した写真の多くは、背景に何かが写...
フランスのリヨンに住む麻痺した男性、ティボーさんは、頭部に埋め込まれた2つのセンサーを頼りに、歩行を...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
米国の宇宙ウェブサイトによると、多くの科学者が人工知能(AI)を使ってエイリアン(学名は「地球外知的...
今日の時代では、人々は目標を達成するために人工知能 (AI) にますます依存するようになっています。...
C# を使用して文字列反転アルゴリズムを実装することに関する面接の質問を見てみましょう。文字列反転の...
GPT-4に次ぐ、李開復のYi-34B-Chatの最新成果が発表されました——アルパカ認定モデル部門...