第12章 ダイナミックスケジューリング 、CUDAグラフ、デバイス主導のカーネルオーケストレーション
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
これまで、個々のカーネルレベルで演算とメモリのスループットを解放してきた。次は、GPUがアイドル状態にならないよう、これらのカーネルをオーケストレーションする段階だ。
本章では、ホスト上でのスケジューリングからデバイス自体でのスケジューリングへと移行する。高速なL2キャッシュアトミック操作による動的ワークキューの活用、反復的なカーネル起動の統合、固定パイプラインのバッチ処理とCPUハンドシェイクの最小化のためのCUDAグラフの使用について探求する。
さらに、デバイス側グラフ起動と動的並列性によってオーケストレーションを深化させる。これによりGPUはCPUへの呼び出しを必要とせず、次に実行すべき処理を自ら決定できる。
最後に、マルチGPU環境において、ピアツーピアコピー、NCCLコレクティブ、CUDA対応MPI、NVSHMEM片側プット/ゲットを重複させる手法を掘り下げる。これによりGPUクラスターは単一の巨大共有メモリコプロセッサのように振る舞う。例えば、NVIDIAのDGX GB200 NVL72システムは、36個のGrace CPUと72個のBlackwell GPUを単一のNVLinkドメインに接続する。このドメイン内では統一アドレス空間が適用され、CPUとGPUを合わせた最大30TBの統合メモリが利用可能だ。72GPUドメイン内のNVLinkファブリックを介したリモートHBMアクセスを実現する。より大規模なNVLinkネットワークトポロジーは単一ラックを超えて拡張できる。
本章では、各テクニックをルーフライン分析に結びつけながら、カーネルの演算密度を高めるための適切な手法(ストリーム、グラフ、アトミック、動的カーネル)の選択を支援する。これによりワークロード全体のパフォーマンス向上が図れる。
本章の終わりまでに、マルチGPUクラスタ全体で各SMに継続的にデータを供給する、動的・デバイスサイド・グラフベースのカーネルオーケストレーションテクニックについて理解できるだろう。
アトミックキューによる動的スケジューリング
スレッド間での不均等な作業代入( )は、一部のSMがアイドル状態になる一方で他のSMが稼働し続ける事態を招く。これはコンピューティングリソースの浪費となり、全体のスループットを低下させる。
この不均衡は、入力依存ループや条件付きワークロードにより、異なるスレッドやブロックがプロセスする作業量が変動する場合に頻繁に発生する。一部のブロックは迅速に完了し、そのSMをアイドル状態にさせる一方、他のSMはより長時間実行されるブロックを継続する。数百のSMを持つ現代のGPUでは、作業が均等に分散されない場合、アイドル期間により多くのSMが遊休状態となる。これはパフォーマンスを著しく損なう可能性がある。
最長実行ワークが終了する頃には、GPUの一部がアイドル状態となっている。これにより、アクティブなワープなしで多くのサイクルが経過したため、達成された占有率が低下する。Nsight Systemsを使用すれば、GPUタイムライン上でこれらのアイドルギャップを明確にプロファイリングして表示できることを覚えておいてほしい。
また、アクティブなSMサイクル数を合計経過SMサイクル数と比較することで、利用率の低さを測れる。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access