現行のハイパフォーマンス コンピューティング (HPC) アプリケーションとディープラーニング アプリケーションは、クラスター規模の GPU 計算処理能力の恩恵を受けており、また、それを必要にすることもあります。クラスター全体で GPU を適切かつ効率的に活用できる CUDA® アプリケーションを記述するには、一連の特別なスキルが必要です。このワークショップでは、NVIDIA GPU クラスターに効率的に拡張できる CUDA C++ アプリケーションを記述するためのツールと手法について学習します。
具体的には講座の中で、複数の NVIDIA GPU でバックアップするインタラクティブ クラウド環境で、複数の CUDA C++ アプリケーションからのコードを操作します。CUDA 対応の Message Passing Interface (MPI) など、マルチ GPU プログラミング手法にいくつか触れ、その後、本コースの主役である NVSHMEM™ に進みます。
NVSHMEM は、CUDA C++ を基盤とし、NVIDIA GPU クラスターに効率的でスケーラブルな通信を提供する並列プログラミング インターフェイスです。NVSHMEM は、マルチ GPU からなるメモリを橋渡しするデータのグローバル アドレス スペースを作成するものであり、GPU で始動する細かな操作、CPU で始動する操作、CUDA ストリーム上の操作でアクセスできます。NVSHMEM の GPU で始動する非同期データ転送によって、CPU と GPU の間の同期で余計な負荷がなくなります。通信と計算の両方を含め、カーネルを長時間実行できます。大規模な拡張時、アプリケーションのパフォーマンスを制限しうる余計な負荷を減らします。NVSHMEM は、Oak Ridge Leadership Computing Facility (OLCF) の Summit スーパーコンピューター、Lawrence Livermore National Laboratory の Sierra スーパーコンピューター、NVIDIA DGX™ A100 などのシステムで利用されています。
学習目標
本ワークショップの内容:
- マルチ GPU CUDA C++ アプリケーションを記述するための方法をいくつか学習する
- さまざまなマルチ GPU 通信パターンを使用し、その兼ね合いを理解する
- CUDA 対応 MPI と NVSHMEM を利用し、SPMD (Single-Program Multiple-Data) パラダイムで移植性と拡張性に優れた CUDA コードを記述する
- NVSHMEM の対称メモリ モデルと、GPU でデータ転送を始動する機能でマルチ GPU SPMD コードを改善する
- 領域分割や Halo Exchange など、一般的なマルチ GPU コーディング パラダイムで練習する
ワークショップ データシートをダウンロードする (PDF 79.5 KB)