Руководство по программированию AMD HIP
Полное техническое руководство по интерфейсу гетерогенных вычислений для портируемости (HIP). Оно предоставляет API времени выполнения на языке C++ и язык ядра, которые позволяют разработчикам создавать переносимые приложения для графических процессоров AMD и NVIDIA из одного исходного кода. Руководство охватывает установку, настройку среды, модели программирования, выделение памяти и инструменты для перевода кода CUDA в HIP.
Уроки
Lesson
Обзор курса
📚 Обзор содержания
Полное техническое руководство по интерфейсу портируемости гетерогенных вычислений (HIP). Оно предоставляет API-интерфейс для среды выполнения на языке C++ и язык ядер, позволяющий разработчикам создавать переносимые приложения для графических процессоров AMD и NVIDIA из одного исходного кода. Руководство охватывает установку, настройку среды, модели программирования, выделение памяти и инструменты для переноса кода CUDA в HIP.
Освойте портируемое программирование на GPU: один исходный код для платформ AMD и NVIDIA.
Автор: Advanced Micro Devices, Inc. (AMD)
Благодарности: торговые марки AMD, логотип AMD Arrow, AMD Instinct, Radeon, ROCm и их комбинации являются товарными знаками компании Advanced Micro Devices, Inc. Linux — зарегистрированный товарный знак Линуса Торвальдса. PCIe — зарегистрированный товарный знак корпорации PCI-SIG.
🎯 Цели обучения
- Определить основные функции и преимущества платформы HIP.
- Показать, как получить доступ к среде HIP и запросить сведения о ней с помощью системных инструментов.
- Объяснить архитектурную связь между портируемостью HIP и технологией компилятора.
- Выполнить установку для конкретных платформ как для среды NVIDIA, так и для среды AMD.
- Координировать многорепозиториальный процесс сборки для компиляции HIP из исходных кодов.
- Проверить успешность установки с помощью инструментов конфигурации системы и проверки.
- Настроить и управлять памятью графического процессора с использованием выделения памяти через HIP, управлением согласованностью и видимостью хост-памяти без копирования.
- Разрабатывать высокопроизводительные ядра с использованием специфичных для HIP квалификаторов функций/переменных, векторных типов и примитивов синхронизации.
- Реализовать сложные параллельные алгоритмы с использованием функций шаффла, голосования, баллотирования и кооперативных групп.
- Автоматизировать перевод кода CUDA в формат HIP с помощью инструментов HIPIFY и управлять преобразованием проектов «на месте».
🔹 Урок 1: Введение в портируемость и архитектуру HIP
Обзор: Этот урок охватывает основополагающие аспекты интерфейса портируемых гетерогенных вычислений (HIP). Он фокусируется на ключевых особенностях, определяющих функциональность HIP, основных методах доступа к среде HIP и базовой технологии компилятора, обеспечивающей бесшовную портируемость между различными архитектурами графических процессоров (AMD и NVIDIA).
Результаты обучения:
- Определить основные функции и ценность платформы HIP.
- Продемонстрировать, как получить доступ к среде HIP и запросить сведения о ней с помощью системных инструментов.
- Объяснить архитектурную связь между портируемостью HIP и технологией компилятора.
🔹 Урок 2: Установка и проверка среды HIP
Обзор: Этот урок представляет техническое руководство по настройке среды (Heterogeneous-compute Interface for Portability) HIP на различных аппаратных платформах. Он охватывает специфические шаги установки для бэкендов AMD и NVIDIA, сложный процесс сборки времени выполнения HIP из исходных репозиториев, а также процедуры окончательной проверки для подтверждения готовности системы к разработке на графических процессорах.
Результаты обучения:
- Выполнить установку для конкретных платформ как для среды NVIDIA, так и для среды AMD.
- Координировать многорепозиториальный процесс сборки для компиляции HIP из исходных кодов.
- Проверить успешность установки с помощью инструментов конфигурации системы и проверки.
🔹 Урок 3: Модель программирования и глубокое погружение в API HIP
Обзор: Этот урок представляет всестороннее исследование модели программирования интерфейса портируемых гетерогенных вычислений (HIP). Он охватывает основной API для управления памятью и выполнения ядер, тонкие особенности языка ядер HIP (включая квалификаторы и встроенные переменные), а также продвинутые функции, такие как примитивы уровня варпа, кооперативные группы и специализированные математические встроенные функции.
Результаты обучения:
- Настроить и управлять памятью графического процессора с использованием выделения памяти через HIP, управлением согласованностью и видимостью хост-памяти без копирования.
- Разрабатывать высокопроизводительные ядра с использованием специфичных для HIP квалификаторов функций/переменных, векторных типов и примитивов синхронизации.
- Реализовать сложные параллельные алгоритмы с использованием функций шаффла, голосования, баллотирования и кооперативных групп.
🔹 Урок 4: Переход и перенос приложений CUDA в HIP
Обзор: Этот урок описывает систематический процесс миграции исходного кода CUDA в платформу HIP (Heterogeneous-Compute Interface for Portability). Он подробно рассматривает использование автоматизированных инструментов, таких как HIPIFY, стратегии преобразования проектов, выявление платформенно-специфичного поведения компиляторов (HIP-Clang против NVIDIA), а также управление различиями в архитектуре.
Результаты обучения:
- Автоматизировать перевод кода CUDA в формат HIP с помощью инструментов HIPIFY и управлять преобразованием проектов «на месте».
- Различать целевые платформы AMD и NVIDIA, а также компиляторы, используя препроцессорные макросы и запросы среды.
- Реализовывать проверки функций архитектуры (HIP_ARCH) и применять обходные решения для специализированных функций CUDA, таких как
memcpyToSymbol.