Guía de Programación AMD HIP
Una guía técnica completa sobre la Interfaz de Computación Heterogénea para Portabilidad (HIP). Proporciona una API de tiempo de ejecución en C++ y un lenguaje de kernel que permite a los desarrolladores crear aplicaciones portátiles para GPUs de AMD y NVIDIA desde un único código fuente. La guía cubre la instalación, la configuración del entorno, modelos de programación, asignación de memoria y herramientas para migrar código CUDA a HIP.
Lecciones
Lesson
Descripción del curso
📚 Resumen del contenido
Un manual técnico completo para la Interfaz de Computación Heterogénea para Portabilidad (HIP). Proporciona una API de tiempo de ejecución en C++ y un lenguaje de kernels que permite a los desarrolladores crear aplicaciones portables para GPUs de AMD y NVIDIA a partir de un solo código fuente. La guía abarca la instalación, la configuración del entorno, los modelos de programación, la asignación de memoria y las herramientas para migrar código CUDA a HIP.
Domina la programación GPU portátil: una única fuente para ambas plataformas AMD y NVIDIA.
Autor: Advanced Micro Devices, Inc. (AMD)
Agradecimientos: AMD, el logotipo de AMD Arrow, AMD Instinct, Radeon, ROCm y sus combinaciones son marcas comerciales de Advanced Micro Devices, Inc. Linux es una marca registrada de Linus Torvalds. PCIe es una marca registrada de PCI-SIG Corporation.
🎯 Objetivos de aprendizaje
- Definir las características principales y las propuestas de valor del marco HIP.
- Demostrar cómo acceder y consultar el entorno HIP mediante herramientas del sistema.
- Explicar la relación arquitectónica entre la portabilidad de HIP y su tecnología de compilador.
- Ejecutar instalaciones específicas de plataforma para entornos NVIDIA y AMD.
- Coordinar el proceso de compilación multi-repositorio para compilar HIP desde el código fuente.
- Validar una instalación exitosa utilizando herramientas de configuración y verificación del sistema.
- Configurar y gestionar la memoria de GPU usando asignación HIP, controles de coherencia y visibilidad de memoria host sin copia.
- Desarrollar kernels de alto rendimiento utilizando calificadores específicos de HIP para funciones/variables, tipos vectoriales y primitivas de sincronización.
- Implementar algoritmos paralelos avanzados utilizando funciones de mezcla por warps, votos, balotas y grupos cooperativos.
- Automatizar la traducción de código CUDA a HIP mediante herramientas HIPIFY y gestionar conversiones de proyectos in situ.
🔹 Lección 1: Introducción a la portabilidad y arquitectura de HIP
Resumen: Esta lección cubre los aspectos fundamentales de la Interfaz de Computación Heterogénea para Portabilidad (HIP). Se centra en las características principales que definen a HIP, los métodos principales para acceder al entorno HIP y la tecnología de compilador subyacente que permite la portabilidad fluida entre diferentes arquitecturas GPU (AMD y NVIDIA).
Resultados de aprendizaje:
- Definir las características principales y las propuestas de valor del marco HIP.
- Demostrar cómo acceder y consultar el entorno HIP mediante herramientas del sistema.
- Explicar la relación arquitectónica entre la portabilidad de HIP y su tecnología de compilador.
🔹 Lección 2: Instalación y verificación del entorno HIP
Resumen: Esta lección proporciona una guía técnica para configurar el entorno HIP (Interfaz de Computación Heterogénea para Portabilidad) en diferentes plataformas de hardware. Cubre los pasos específicos de instalación para los backends de AMD y NVIDIA, el proceso complejo de construcción del tiempo de ejecución de HIP a partir de repositorios de código fuente y los procedimientos finales de verificación para asegurar la preparación del sistema para el desarrollo con GPU.
Resultados de aprendizaje:
- Ejecutar instalaciones específicas de plataforma para entornos NVIDIA y AMD.
- Coordinar el proceso de compilación multi-repositorio para compilar HIP desde el código fuente.
- Validar una instalación exitosa utilizando herramientas de configuración y verificación del sistema.
🔹 Lección 3: Modelo de programación y profundización en la API de HIP
Resumen: Esta lección ofrece una exploración completa del modelo de programación de la Interfaz de Computación Heterogénea para Portabilidad (HIP). Cubre la API fundamental para la gestión de memoria y la ejecución de kernels, los matices del lenguaje de kernels HIP (incluyendo calificadores y variables integradas) y funciones avanzadas como primitivas a nivel de warp, grupos cooperativos y intrínsecos matemáticos especializados.
Resultados de aprendizaje:
- Configurar y gestionar la memoria de GPU usando asignación HIP, controles de coherencia y visibilidad de memoria host sin copia.
- Desarrollar kernels de alto rendimiento utilizando calificadores específicos de HIP para funciones/variables, tipos vectoriales y primitivas de sincronización.
- Implementar algoritmos paralelos avanzados utilizando funciones de mezcla por warps, votos, balotas y grupos cooperativos.
🔹 Lección 4: Transición y migración de aplicaciones CUDA a HIP
Resumen: Esta lección cubre el proceso sistemático de migrar código fuente CUDA al marco HIP (Interfaz de Computación Heterogénea para Portabilidad). Detalla el uso de herramientas automatizadas como HIPIFY, estrategias para la conversión de proyectos, la identificación de comportamientos específicos del compilador según la plataforma (HIP-Clang vs. NVIDIA) y la gestión de diferencias arquitectónicas.
Resultados de aprendizaje:
- Automatizar la traducción de código CUDA a HIP mediante herramientas HIPIFY y gestionar conversiones de proyectos in situ.
- Diferenciar entre plataformas objetivo AMD y NVIDIA y sus compiladores usando macros preprocesador y consultas de entorno.
- Implementar comprobaciones de funcionalidades arquitectónicas (HIP_ARCH) y aplicar soluciones alternativas para funciones CUDA especializadas como
memcpyToSymbol.