Las aplicaciones actuales de computación de alto rendimiento (HPC) y deep learning se benefician de, e incluso requieren, la potencia de computación de la GPU en un clúster. Escribir aplicaciones de CUDA® que puedan utilizar de forma correcta y eficiente las GPU en un clúster requiere de un conjunto distinto de habilidades. En este taller, aprenderás las herramientas y técnicas necesarias para escribir aplicaciones de CUDA C++ que puedes escalar de manera eficiente a clústeres de las GPU de NVIDIA.
Para ello, trabajarás en el código de varias aplicaciones de CUDA C++ en un entorno de cloud interactivo respaldado por varias GPU de NVIDIA. Conocerás varios métodos de programación con múltiples GPU, incluida la Interfaz de Paso de Mensajes (MPI) consciente de CUDA, antes de continuar con el enfoque principal de este curso, NVSHMEM™.
NVSHMEM es una interfaz de programación paralela basada en OpenSHMEM que proporciona una comunicación eficiente y escalable para los clústeres de las GPU de NVIDIA. NVSHMEM crea un espacio de direcciones globales para los datos que abarca la memoria de varias GPU y se puede acceder a él con operaciones detalladas iniciadas por la GPU, operaciones iniciadas por la CPU y operaciones en flujos de CUDA. Las transferencias de datos asincrónicas iniciadas por la GPU de NVSHMEM eliminan los gastos generales de sincronización entre la CPU y la GPU. También permiten kernels de larga ejecución que incluyen tanto comunicación como computación, lo que reduce los gastos generales que pueden limitar el rendimiento de una aplicación cuando se realiza un escalado sólido. NVSHMEM se ha utilizado en sistemas como la supercomputadora Summit ubicada en la Instalación de Computación de Liderazgo Oak Ridge (OLCF), la supercomputadora Sierra del Laboratorio Nacional Lawrence Livermore y la NVIDIA DGX™ A100.
Objetivos de Aprendizaje
Al participar en este workshop, lograrás lo siguiente:
- Aprenderás varios métodos para escribir aplicaciones de CUDA C++ para múltiples GPU
- Usarás una variedad de patrones de comunicación de múltiples GPU y comprenderás sus compensaciones
- Escribirás código CUDA portátil y escalable con el paradigma de datos múltiples de programa único (SPMD) utilizando MPI y NVSHMEM conscientes de CUDA
- Mejorarás el código SPMD de múltiples GPU con el modelo de memoria simétrica de NVSHMEM y su capacidad para realizar transferencias de datos iniciadas por GPU
- Practicarás con paradigmas comunes de codificación de múltiples GPU como la descomposición de dominios y los intercambios de halo
Descargar la hoja de datos del workshop (PDF 79.5 KB)