Entrar em Contato

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

Número de participantes


Preço por participante

Próximas Formações Provisórias

Categorias Relacionadas