Obrigado por enviar sua consulta! Um dos membros da nossa equipe entrará em contato com você em breve.
Obrigado por enviar sua reserva! Um dos membros da nossa equipe entrará em contato com você em breve.
Programa do Curso
Introdução
- O que é o ROCm?
- O que é o HIP?
- ROCm versus CUDA versus OpenCL
- Visão geral das características e arquitetura do ROCm e HIP
- Configuração do Ambiente de Desenvolvimento
Iniciando
- Criação de um novo projeto ROCm usando o Visual Studio Code
- Exploração da estrutura e dos arquivos do projeto
- Compilação e execução do programa
- Exibição da saída usando printf e fprintf
API do ROCm
- Compreensão do papel da API do ROCm no programa host
- Uso da API do ROCm para consultar informações e capacidades do dispositivo
- Uso da API do ROCm para alocar e liberar memória do dispositivo
- Uso da API do ROCm para copiar dados entre host e dispositivo
- Uso da API do ROCm para iniciar kernels e sincronizar threads
- Uso da API do ROCm para tratar erros e exceções
Linguagem HIP
- Compreensão do papel da linguagem HIP no programa de dispositivo
- Uso da linguagem HIP para escrever kernels que executam na GPU e manipulam dados
- Uso de tipos de dados, qualificadores, operadores e expressões do HIP
- Uso de funções, variáveis e bibliotecas embutidas do HIP para realizar tarefas e operações comuns
Modelo de Memória ROCm e HIP
- Compreensão da diferença entre os modelos de memória host e dispositivo
- Uso dos espaços de memória do ROCm e HIP, como global, compartilhado, constante e local
- Uso dos objetos de memória do ROCm e HIP, como ponteiros, arrays, texturas e superfícies
- Uso dos modos de acesso à memória do ROCm e HIP, como apenas leitura, apenas escrita, leitura/escrita, etc.
- Uso do modelo de consistência de memória e mecanismos de sincronização do ROCm e HIP
Modelo de Execução ROCm e HIP
- Compreensão da diferença entre os modelos de execução host e dispositivo
- Uso das threads, blocos e grades do ROCm e HIP para definir o paralelismo
- Uso das funções de thread do ROCm e HIP, como hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
- Uso das funções de bloco do ROCm e HIP, como __syncthreads, __threadfence_block, etc.
- Uso das funções de grade do ROCm e HIP, como hipGridDim_x, hipGridSync, grupos cooperativos, etc.
Depuração
- Compreensão dos erros e bugs comuns em programas ROCm e HIP
- Uso do debugger do Visual Studio Code para inspecionar variáveis, pontos de interrupção, pilha de chamadas, etc.
- Uso do ROCm Debugger para depurar programas ROCm e HIP em dispositivos AMD
- Uso do ROCm Profiler para analisar programas ROCm e HIP em dispositivos AMD
Otimização
- Compreensão dos fatores que afetam o desempenho de programas ROCm e HIP
- Uso das técnicas de coalescência do ROCm e HIP para melhorar a largura de banda de memória
- Uso das técnicas de cacheamento e pre-busca do ROCm e HIP para reduzir a latência de memória
- Uso das técnicas de memória compartilhada e memória local do ROCm e HIP para otimizar acessos à memória e largura de banda
- Uso do perfilamento (profiling) e das ferramentas de profiling do ROCm e HIP para medir e melhorar o tempo de execução e a utilização de recursos
Resumo e Próximos Passos
Requisitos
- Compreensão da linguagem C/C++ e conceitos de programação paralela
- Conhecimento básico de arquitetura de computadores e hierarquia de memória
- Experiência com ferramentas de linha de comando e editores de código
Público-Alvo
- Desenvolvedores que desejam aprender a usar o ROCm e o HIP para programar GPUs AMD e explorar seu paralelismo
- Desenvolvedores que desejam escrever código de alto desempenho e escalável capaz de rodar em diferentes dispositivos AMD
- Programadores que desejam explorar os aspectos de baixo nível da programação de GPU e otimizar o desempenho de seu código
28 Horas