A computação de alto desempenho (HPC - High Performance Computing) e as aplicações de deep learning modernas são favorecidas por uma potência computacional de GPU em escala de cluster e, às vezes, até exigem essa potência. Escrever aplicações CUDA® que utilizem GPUs em um cluster de forma correta e eficiente requer um conjunto de habilidades específicas. Neste workshop, você conhecerá as ferramentas e técnicas necessárias para escrever aplicações CUDA C++ que podem ser dimensionadas com eficiência para clusters de GPUs NVIDIA.
Para isso, você trabalhará no código de várias aplicações CUDA C++ em um ambiente interativo no cloud com diversas GPUs NVIDIA. Você terá contato com uma série de métodos de programação multi-GPU, incluindo Message Passing Interface (MPI) com reconhecimento de CUDA, antes de chegar ao foco principal do curso, a NVSHMEM™.
NVSHMEM é uma interface de programação paralela baseada em OpenSHMEM que fornece comunicação eficiente e dimensionável para clusters de GPU NVIDIA. A NVSHMEM cria um espaço de endereçamento global para dados que abrange a memória de várias GPUs e pode ser acessado com operações refinadas iniciadas por GPU, operações iniciadas por CPU e operações em fluxos CUDA. As transferências de dados assíncronas iniciadas por GPU da NVSHMEM eliminam as sobrecargas de sincronização entre a CPU e a GPU. Elas também permitem kernels de longa execução que incluem comunicação e computação, reduzindo as sobrecargas gerais que podem limitar o desempenho de uma aplicação com dimensionamento forte. A NVSHMEM tem sido usada em sistemas como o supercomputador Summit, localizado na Oak Ridge Leadership Computing Facility (OLCF), o supercomputador Sierra, do Lawrence Livermore National Laboratory, e a NVIDIA DGX™ A100.
Objetivos de Aprendizagem
Neste workshop, você:
- Aprenderá vários métodos para escrever aplicações CUDA C++ multi-GPU
- Usará uma variedade de padrões de comunicação multi-GPU e entenderá as vantagens e desvantagens
- Escreverá código CUDA portátil e dimensionável com o paradigma de programa único e múltiplos dados (SPMD - Single Program Multiple Data) usando a MPI com reconhecimento de CUDA e a NVSHMEM
- Aprimorará código SPMD multi-GPU com o modelo de memória simétrica da NVSHMEM e sua capacidade de realizar transferências de dados iniciadas por GPU
- Fará exercícios práticos com paradigmas comuns de codificação multi-GPU, como decomposição de domínio e trocas de "halos"
Faça download do datasheet do workshop (PDF de 79,5KB)