當今的高效能運算 (HPC) 和深度學習應用程式,可受益於 (甚至也需要) 叢集規模的 GPU 運算能力。要編寫能夠正確且有效地跨叢集使用 GPU 的 CUDA® 應用程式,會需要一整套獨特的技能。在本實作坊中,您將學習編寫 CUDA C++ 應用程式所需要的技術以及工具,將其有效地擴展到 NVIDIA GPU 叢集上。
您將藉由在多個 NVIDIA GPU 支援的互動式雲端環境中,處理來自數個 CUDA C++ 應用程式的程式碼來學習。在前往本課程的主要重點 NVSHMEM™ 之前,您會先接觸到幾個多 GPU 程式設計方法,包括 CUDA-aware 訊息傳遞介面 (message passing interface,MPI)。
NVSHMEM 是奠基於 OpenSHMEM 的平行程式設計介面,可為 NVIDIA GPU 叢集提供有效率且可擴充的通訊能力。NVSHMEM 為跨越多個 GPU 記憶體的資料建立全域位址空間,可存取細粒度 GPU 啟動的運算、CPU 啟動的運算和利用 CUDA 串流的運算。NVSHMEM 是非同步的,GPU 啟動的資料傳輸可消除 CPU 和 GPU 之間的同步開銷。也支援包含通訊和運算的長期核心,在進行強大的擴充調整時,減少可能會限制應用程式效能的負荷。NVSHMEM 已用於橡樹嶺領導運算中心 (OLCF) 的 Summit 超級電腦、勞倫斯利佛摩國家實驗室的 Sierra 超級電腦,以及 NVIDIA DGX™ A100 等系統。
學習目標
參加本實作坊可學會:
- 瞭解編寫多 GPU CUDA C++ 應用程式的多種方法
- 使用各種多 GPU 通訊模式,瞭解其優缺點
- 透過使用 CUDA-aware MPI 和 NVSHMEM 的單程式多資料 (SPMD) 範例,編寫可攜且可擴充的 CUDA 程式碼
- 使用 NVSHMEM 的對稱記憶體模型及其執行 GPU 啟動資料傳輸的功能,改善多 GPU SPMD 程式碼
- 練習操作常見的多 GPU 編碼模型 (如場域分解和光暈交換)
下載實作坊大綱與簡介 (PDF 79.5 KB)