Introdução à Programação ROCm e HIP: Um Tutorial Prático
Um guia prático e moderno sobre programação em GPU da AMD com ROCm e HIP. Aborda todo o stack de software, instalação, fluxos de compilação, programação de kernels, gerenciamento de memória, engenharia de desempenho, uso de bibliotecas, migração do CUDA e práticas de depuração em produção.
Visão Geral do Curso
Resumo do Conteúdo
Um guia prático e moderno sobre programação de GPU da AMD com ROCm e HIP. Aborda toda a pilha de software, instalação, fluxos de compilação, programação de kernels, gerenciamento de memória, engenharia de desempenho, uso de bibliotecas, portabilidade de CUDA e práticas de depuração em produção.
Domine a programação de GPU da AMD e a portabilidade de CUDA para HIP com esta análise técnica aprofundada.
Autor: EvoClass
Agradecimentos: Documentação oficial da AMD baseada no ROCm e HIP, incluindo projetos como ROCm, HIP e ROCm LLVM.
Objetivos de Aprendizagem
- Defina HIP e seu papel dentro do ecossistema ROCm em uma única frase concisa.
- Diferencie entre ROCm (plataforma), HIP (interface) e bibliotecas ROCm (elementos construtivos).
- Identifique as camadas hierárquicas da arquitetura ROCm desde o hardware até os frameworks de aplicação.
- Defina a relação entre o SDK HIP e a plataforma ROCm em diferentes sistemas operacionais.
- Execute um fluxo de instalação sistemático, incluindo verificação da matriz de suporte e configuração de caminhos após a instalação.
- Compile e execute um programa mínimo de verificação para solucionar problemas comuns de driver e acesso ao ambiente.
- Compreenda por que uma estratégia robusta de compilação é essencial para reconciliar a portabilidade de código-fonte com o desempenho específico da arquitetura.
- Implemente lançamentos de kernels portáveis usando a macro
hipLaunchKernelGGLcomo alternativa à sintaxe de triplas chaves do CUDA. - Configure projetos CMake de nível produtivo que visem arquiteturas específicas do ROCm e gerenciem dependências de bibliotecas externas.
- Defina a anatomia de um kernel HIP e aplique a fórmula básica de indexação de threads.