Современные приложения для высокопроизводительных вычислений (HPC) и глубокого обучения требуют вычислительной мощности GPU-кластера. Чтобы написать такие приложения CUDA®, которые смогут эффективно утилизировать кластер графических процессоров, требуется определенный набор навыков. В этом практикуме вы узнаете, какие инструменты необходимы для разработки приложений CUDA на C++ и последующего эффективного развертывания их в кластерах GPU NVIDIA.
Вам предстоит работать над кодом нескольких приложений CUDA на C ++ в облачной среде с ускорением на графических процессорах NVIDIA. Прежде чем перейти к основной теме этого курса — NVSHMEM™ — вы познакомитесь с различными методами программирования для систем с несколькими GPU, включая совместимый с CUDA программный интерфейс MPI (Message Passing Interface).
NVSHMEM — это интерфейс для параллельного программирования, основанный на OpenSHMEM. Он обеспечивает эффективный и масштабируемый обмен данными между GPU-кластерами. NVSHMEM создает глобальное адресное пространство с общей памятью нескольких графических процессоров, к которому можно получить доступ с помощью мелкомодульных инициируемых GPU операций, инициируемых GPU операций и операций CUDA потокового уровня. Асинхронный способ передачи данных, инициируемый графическим процессором, позволяет устранить затраты ресурсов на синхронизацию между CPU и GPU. Он также позволяет ядру выполнять длительные задачи, включая передачу данных и вычисления. Это уменьшает затрату ресурсов, которая может ограничивать производительность приложения при сильном масштабировании. NVSHMEM использовался в суперкомпьютере Ок-Риджской национальной лаборатории Summit, суперкомпьютере Ливерморской национальной лаборатории им. Лоуренса Sierra и NVIDIA DGX™ A100.
Цели обучения
На этом практикуме вам предстоит:
- Узнать, как написать приложения CUDA на C++ для запуска на нескольких графических процессорах
- Использовать различные паттерны коммуникации multi-GPU и узнать о компромиссных подходах
- Написать переносимый масштабируемый код CUDA методом SPMD, используя CUDA-совместимые MPI и NVSHMEM
- Улучшить код SPMD для нескольких GPU с помощью симметричной модели памяти NVSHMEM и передачи данных, инициированной графическим процессором
- Попрактиковаться с распространенными парадигмами программирования multi-GPU, например методами декомпозиции области и halo exchange
Скачать описание практикума (PDF, 79,5 KБ)