ブロガーは、ブロガーの元の記事を転載することを個人または組織に許可していません。元の記事へのサポートに感謝します!
ブロガーリンク
私は国際的に有名な端末メーカーで働いており、モデム チップの研究開発を担当しています。
5G黎明期には端末データサービス層とコアネットワークの開発を担当し、現在は6Gコンピューティングパワーネットワークの技術標準の研究をリードしている。
ブログの内容は主に
5G/6G プロトコルの説明
コンピューティングパワー ネットワークの説明 (クラウドコンピューティング、エッジコンピューティング、エンドコンピューティング)
高度な C 言語の説明
Rust 言語の説明
記事ディレクトリ
nvidia の高度な機能 MIG の詳細な紹介 (2)
1. CUDA が提供する同時実行メカニズム
MIG は基本的に CUDA アプリケーションに対して透過的であるため、CUDA のプログラミング モデルを変更せずにプログラミング作業を削減できます。CUDA は、GPU でジョブを並列実行するためのいくつかの手法を公開しており、これらの手法と MIG との比較を以下に示します。Streams
および はMPS
CUDA プログラミング モデルの一部であるため、GPU インスタンスで使用できることに注意してください。
CUDA ストリームは CUDA プログラミング モデルの機能であり、異なるジョブを CUDA アプリケーションの個別のキューに送信し、GPU によって個別に処理できます。CUDA ストリームは単一のプロセス内でのみ使用でき、あまり分離されていません。アドレス空間が共有され、SM が共有され、GPU メモリ帯域幅、キャッシュ、およびメモリ容量が共有されます。最終的に、エラーはすべての Streams と実行全体に影響します。
MPS (Multi-Process service) は、CUDA のマルチプロセス サービスです。協調的なマルチプロセス アプリケーションが GPU 上のコンピューティング リソースを共有できるようにします。MPI の共同作業に一般的に使用されますが、無関係なアプリケーションが GPU リソースを共有するためにも使用されますが、このソリューションによってもたらされる課題も受け入れます。MPS は現在、クライアント間のエラー分離を提供しませんが、すべての SM 間で各 MPS クライアントが使用するストリーミング マルチプロセッサの割合を制限することは可能ですが、スケジューリング ハードウェアは引き続き共有されます。メモリ帯域幅、キャッシュ、およびメモリ容量はすべて、MPS クライアント間で共有されます。
MIG は、並列ジョブを実行する際の他の CUDA テクノロジの制限の一部に対処しながら、NVIDIA GPU によって提供される新しい形式の同時実行です。
ストリーム | MPS | 自分 | |
---|---|---|---|
パーティションタイプ | 単一プロセス | 論理分割 | 身体区分 |
最大パーティション数 | 無制限 | 48 | 7 |
SM パフォーマンス分離 | いいえ | はい (パーセンテージで、パーティションではありません) | はい |
メモリ保護 | いいえ | はい | はい |
メモリ帯域幅 QoS | いいえ | いいえ | はい |
誤った隔離 | いいえ | いいえ | はい |
パーティション間の相互運用性 | いつも | IPC | 限定IPC |
いつ再構成するか | 設定する準備ができました | プロセス開始 | アイドル状態で |
2. MIG 機器の命名規則
デフォルトでは、MIG デバイスは「GPU インスタンス」と「コンピュート インスタンス」で構成されます。次の表は、GPU インスタンスごとの命名規則を示しています。スライスの数を数えますそしてその合計メモリ (GB)(単にメモリ スライス番号ではなく) MIG デバイスをマークします。
CI が 1 つだけ作成される (GI のすべての計算能力を消費する) 場合、上の図に示すように、デバイス名に CI のサイズが示されます。
次の表に、A100-SXM4-40GB プロファイル名の説明を示します。A100-SXM4-80GB の場合、プロファイル名はメモリ比率に応じて変化します (例: 1g.10gb、2g.20gb、3g.40gb、4g.40gb、7g.80gb)。
メモリー | 20ギガバイト | 10ギガバイト | 5ギガバイト |
GPU インスタンス | 3g | 2g1g | |
コンピュート インスタンス | 3c | 2c | 1c |
MIG デバイス | 3g.20GB | 2g.10GB | 1g.5GB |
GPCGPCGPC | GPCGPC | GPC |
各 GI は、ユーザーのワークロードに応じて複数の CI にさらに分割できます。次の表は、主にこの場合の MIG デバイスの名前を示しています。示されている例は、3g.20gb デバイスを、さまざまな数のコンピューティング インスタンス スライスを持つ一連のサブデバイスに分割したものです。
3、CUDA デバイスの列挙
CUDA アプリケーションは、MIG デバイス識別子を使用して、特定の MIG デバイスでプログラムを許可します。CUDA 11/R450 および CUDA 12/R525 は、単一の MIG インスタンスの列挙のみをサポートします。つまり、いくつの MIG デバイスが作成された (またはコンテナーで使用できるようになった) 場合でも、1 つの CUDA プロセスで列挙できる MIG デバイスは 1 つだけです。
CUDA アプリケーションは、CI とその親 GI を CUDA デバイスとして認識します。CUDA は単一の CI のみを使用できます。複数の CI が表示されている場合、最初に使用可能な CI が選択されます。要約すると、次の 2 つの制約があります。
- CUDA は単一のコンピューティング インスタンスのみを列挙できます。
- 他の GPU の計算インスタンスが列挙されている場合、CUDA は非 MIG GPU を列挙しません。
CUDA_VISIBLE_DEVICES
MIG の拡張サポート。使用するドライバーのバージョンに応じて、次の 2 つの形式がサポートされます。
- drivers >= R470(470.42.01+) の下では、各 MIG デバイスに次の形式で GPU UUID が割り当てられます。
- drivers > R470 (R450 や R460 など) は、CI と対応する親 GI を指定して、各 MIG デバイスを列挙します。形式は次の規則に従います: MIG-<GPU-UUID>/<GPU インスタンス ID>/<計算インスタンス ID>;
$ nvidia-smi -L
GPU 0: A100-SXM4-40GB (UUID: GPU-5d5ba0d6-d33d-2b2c-524d-9e3d8d2b8a77)
MIG 1g.5gb Device 0: (UUID: MIG-c6d4f1ef-42e4-5de3-91c7-45d71c87eb3f)
MIG 1g.5gb Device 1: (UUID: MIG-cba663e8-9bed-5b25-b243-5985ef7c9beb)
MIG 1g.5gb Device 2: (UUID: MIG-1e099852-3624-56c0-8064-c5db1211e44f)
MIG 1g.5gb Device 3: (UUID: MIG-8243111b-d4c4-587a-a96d-da04583b36e2)
MIG 1g.5gb Device 4: (UUID: MIG-169f1837-b996-59aa-9ed5-b0a3f99e88a6)
MIG 1g.5gb Device 5: (UUID: MIG-d5d0152c-e3f0-552c-abee-ebc0195e9f1d)
MIG 1g.5gb Device 6: (UUID: MIG-7df6b45c-a92d-5e09-8540-a6b389968c31)
GPU 1: A100-SXM4-40GB (UUID: GPU-0aa11ebd-627f-af3f-1a0d-4e1fd92fd7b0)
MIG 2g.10gb Device 0: (UUID: MIG-0c757cd7-e942-5726-a0b8-0e8fb7067135)
MIG 2g.10gb Device 1: (UUID: MIG-703fb6ed-3fa0-5e48-8e65-1c5bdcfe2202)
MIG 2g.10gb Device 2: (UUID: MIG-532453fc-0faa-5c3c-9709-a3fc2e76083d)
4. 使用できる MIG 構成ファイル
気軽に MIG を構成することはできません。NVIDIA には、MIG が使用する構成ファイルがいくつかあります。
A100 を使用しているため、ここでは A100 の MIG 構成ファイルを次のように使用します。
A100-SXM4-40GB でサポートされている構成ファイルを次の表に示します。A100-SXM4-80GB の場合、プロファイル名はメモリの比率によって異なります (例: 1g.10gb、1g.10gb+me、1g.20gb、2g.20gb、3g.40gb、4g.40gb、7g.80gb)。
読んでいただきありがとうございます。Congshanruosui のブログはこちらです。