Guia de Programação AMD HIP
Um manual técnico abrangente para a Interface de Computação Heterogênea para Portabilidade (HIP). Ele fornece uma API de tempo de execução em C++ e uma linguagem de kernel que permite aos desenvolvedores criar aplicativos portáveis para GPUs AMD e NVIDIA a partir de um único código-fonte. O guia cobre instalação, configuração do ambiente, modelos de programação, alocação de memória e ferramentas para portar código CUDA para HIP.
Aulas
Lesson
Visão Geral do Curso
📚 Resumo do Conteúdo
Um manual técnico abrangente para a Interface de Computação Heterogênea para Portabilidade (HIP). Ele fornece uma API de tempo de execução em C++ e uma linguagem de kernel que permite aos desenvolvedores criar aplicações portáveis para GPUs AMD e NVIDIA a partir de um único código-fonte. O guia cobre instalação, configuração do ambiente, modelos de programação, alocação de memória e ferramentas para migrar códigos CUDA para HIP.
Domine a programação GPU portável: uma única fonte para plataformas AMD e NVIDIA.
Autor: Advanced Micro Devices, Inc. (AMD)
Agradecimentos: AMD, o logotipo AMD Arrow, AMD Instinct, Radeon, ROCm e suas combinações são marcas registradas da Advanced Micro Devices, Inc. Linux é uma marca registrada de Linus Torvalds. PCIe é uma marca registrada da PCI-SIG Corporation.
🎯 Objetivos de Aprendizagem
- Definir os principais recursos e propostas de valor da estrutura HIP.
- Demonstrar como acessar e consultar o ambiente HIP usando ferramentas do sistema.
- Explicar a relação arquitetônica entre a portabilidade do HIP e sua tecnologia de compilador.
- Executar instalações específicas da plataforma para ambientes NVIDIA e AMD.
- Coordenar o processo de compilação multi-repositório para compilar o HIP a partir do código-fonte.
- Validar uma instalação bem-sucedida usando ferramentas de configuração e verificação do sistema.
- Configurar e gerenciar a memória da GPU usando alocação HIP, controles de coerência e visibilidade de memória host zero-copy.
- Desenvolver kernels de alto desempenho usando qualificadores específicos do HIP, tipos vetoriais e primitivas de sincronização.
- Implementar algoritmos paralelos avançados utilizando funções de embaralhamento de warp, votação, balotagem e grupos cooperativos.
- Automatizar a tradução de código CUDA para HIP usando as ferramentas HIPIFY e gerenciar conversões de projetos in-loco.
🔹 Lição 1: Introdução à Portabilidade e Arquitetura do HIP
Visão Geral: Esta lição aborda os aspectos fundamentais da Interface de Computação Heterogênea para Portabilidade (HIP). Foca nos recursos centrais que definem o HIP, os métodos principais para acessar o ambiente HIP e a tecnologia de compilador subjacente que habilita a portabilidade sem problemas entre diferentes arquiteturas de GPU (AMD e NVIDIA).
Resultados de Aprendizagem:
- Definir os principais recursos e propostas de valor da estrutura HIP.
- Demonstrar como acessar e consultar o ambiente HIP usando ferramentas do sistema.
- Explicar a relação arquitetônica entre a portabilidade do HIP e sua tecnologia de compilador.
🔹 Lição 2: Instalação e Verificação do Ambiente HIP
Visão Geral: Esta lição fornece um guia técnico para configurar o ambiente HIP (Interface de Computação Heterogênea para Portabilidade) em diferentes plataformas de hardware. Cobertura dos passos específicos de instalação para backends AMD e NVIDIA, o processo complexo de compilação do runtime HIP a partir de repositórios de código-fonte e os procedimentos finais de verificação para garantir a prontidão do sistema para desenvolvimento com GPU.
Resultados de Aprendizagem:
- Executar instalações específicas da plataforma para ambientes NVIDIA e AMD.
- Coordenar o processo de compilação multi-repositório para compilar o HIP a partir do código-fonte.
- Validar uma instalação bem-sucedida usando ferramentas de configuração e verificação do sistema.
🔹 Lição 3: Modelo e Profundidade da API do HIP
Visão Geral: Esta lição oferece uma exploração abrangente do modelo de programação da Interface de Computação Heterogênea para Portabilidade (HIP). Aborda a API fundamental para gerenciamento de memória e execução de kernels, os detalhes da linguagem de kernel HIP (incluindo qualificadores e variáveis embutidas) e funcionalidades avançadas como primitivas de nível de warp, grupos cooperativos e intrínsecas matemáticas especializadas.
Resultados de Aprendizagem:
- Configurar e gerenciar a memória da GPU usando alocação HIP, controles de coerência e visibilidade de memória host zero-copy.
- Desenvolver kernels de alto desempenho usando qualificadores/funções específicas do HIP, tipos vetoriais e primitivas de sincronização.
- Implementar algoritmos paralelos avançados utilizando funções de embaralhamento de warp, votação, balotagem e grupos cooperativos.
🔹 Lição 4: Migrando e Convertendo Aplicações CUDA para HIP
Visão Geral: Esta lição aborda o processo sistemático de migrar código-fonte CUDA para a estrutura HIP (Interface de Computação Heterogênea para Portabilidade). Detalha o uso de ferramentas automatizadas como o HIPIFY, estratégias para conversão de projetos, identificação de comportamentos específicos do compilador por plataforma (HIP-Clang vs. NVIDIA) e gestão das diferenças arquitetônicas.
Resultados de Aprendizagem:
- Automatizar a tradução de código CUDA para HIP usando ferramentas HIPIFY e gerenciar conversões de projetos in-loco.
- Diferenciar entre plataformas e compiladores-alvo AMD e NVIDIA usando macros de pré-processador e consultas de ambiente.
- Implementar verificações de funcionalidades arquitetônicas (HIP_ARCH) e aplicar soluções alternativas para funções CUDA especializadas como
memcpyToSymbol.