К курсам
AI022 Профессиональное

Руководство по программированию AMD HIP

Полное техническое руководство по интерфейсу гетерогенных вычислений для портируемости (HIP). Оно предоставляет API времени выполнения на языке C++ и язык ядра, которые позволяют разработчикам создавать переносимые приложения для графических процессоров AMD и NVIDIA из одного исходного кода. Руководство охватывает установку, настройку среды, модели программирования, выделение памяти и инструменты для перевода кода CUDA в HIP.

4.9
12.0h
841 учеников
4 lessons
0 лайки
Искусственный интеллект
Начать обучение

Обзор курса

📚 Обзор содержания

Полное техническое руководство по интерфейсу портируемости гетерогенных вычислений (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.

🎯 Цели обучения

  1. Определить основные функции и преимущества платформы HIP.
  2. Показать, как получить доступ к среде HIP и запросить сведения о ней с помощью системных инструментов.
  3. Объяснить архитектурную связь между портируемостью HIP и технологией компилятора.
  4. Выполнить установку для конкретных платформ как для среды NVIDIA, так и для среды AMD.
  5. Координировать многорепозиториальный процесс сборки для компиляции HIP из исходных кодов.
  6. Проверить успешность установки с помощью инструментов конфигурации системы и проверки.
  7. Настроить и управлять памятью графического процессора с использованием выделения памяти через HIP, управлением согласованностью и видимостью хост-памяти без копирования.
  8. Разрабатывать высокопроизводительные ядра с использованием специфичных для HIP квалификаторов функций/переменных, векторных типов и примитивов синхронизации.
  9. Реализовать сложные параллельные алгоритмы с использованием функций шаффла, голосования, баллотирования и кооперативных групп.
  10. Автоматизировать перевод кода CUDA в формат HIP с помощью инструментов HIPIFY и управлять преобразованием проектов «на месте».

Уроки

Lesson

This lesson introduces the multi-vendor dilemma in high-performance computing, where hardware heterogeneity and proprietary APIs create software fragmentation and maintenance debt. Students will learn how the HIP framework addresses these challenges by enabling performance portability and simplifying the transition between different GPU architectures.

This lesson covers the installation and configuration of the Heterogeneous-compute Interface for Portability (HIP) environment, focusing on the single-source paradigm for cross-platform GPU development. Students will learn how to manage environment variables like CUDA_PATH and HIP_PATH to enable the hipcc compiler to route code effectively across NVIDIA and AMD hardware architectures.

AI022: HIP Programming Model and API Deep Dive (Lesson 3) explores the architectural foundations of the HIP ecosystem, focusing on the ROCm stack, hardware discovery, and the porting workflow from CUDA to AMD architectures. Students will learn to utilize the hipify-perl and hipcc toolchains, manage low-level HSA runtime initialization, and implement effective memory mapping for GPU resource orchestration.

This lesson explores the Heterogeneous-compute Interface for Portability (HIP), a C++ runtime API designed to enable cross-platform GPU development by abstracting hardware layers for both NVIDIA and AMD systems. Students will learn how to configure the HIP environment, utilize the hipcc compiler, and apply functional mappings to migrate legacy CUDA applications to a unified, portable codebase.