Programa do Curso

Introdução

  • O que é o ROCm?
  • O que é HIP?
  • ROCm vs CUDA vs OpenCL
  • Visão geral dos recursos e da arquitetura do ROCm e do HIP
  • Configurando o ambiente de desenvolvimento

Primeiros passos

  • Criar um novo projeto ROCm utilizando o código Visual Studio
  • Explorando a estrutura e os arquivos do projeto
  • Compilar e executar o programa
  • Exibindo a saída usando printf e fprintf

API do ROCm

  • Compreender o papel da API do ROCm no programa anfitrião
  • Utilizar a API do ROCm para consultar informações e capacidades do dispositivo
  • Utilizar o ROCm API para atribuir e anular a atribuição de memória do dispositivo
  • Utilização da API do ROCm para copiar dados entre o anfitrião e o dispositivo
  • Utilização da API do ROCm para lançar kernels e sincronizar threads
  • Utilização da API ROCm para tratar erros e excepções

Linguagem HIP

  • Compreender o papel da linguagem HIP no programa do dispositivo
  • Utilizar a linguagem HIP para escrever kernels que executam no GPU e manipulam dados
  • Utilizar tipos de dados, qualificadores, operadores e expressões HIP
  • Utilização de funções, variáveis e bibliotecas incorporadas na HIP para efetuar tarefas e operações comuns

Modelo de memória ROCm e HIP

  • Compreender a diferença entre os modelos de memória do anfitrião e do dispositivo
  • Utilização de espaços de memória ROCm e HIP, tais como global, partilhada, constante e local
  • Utilização de objectos de memória ROCm e HIP, como ponteiros, matrizes, texturas e superfícies
  • Utilização dos modos de acesso à memória do ROCm e da HIP, tais como apenas leitura, apenas escrita, leitura-escrita, etc.
  • Utilização do modelo de consistência de memória e dos mecanismos de sincronização do ROCm e da HIP

Modelo de execução do ROCm e da HIP

  • Compreender a diferença entre os modelos de execução do anfitrião e do dispositivo
  • Utilização de threads, blocos e grelhas do ROCm e da HIP para definir o paralelismo
  • Utilização das funções de thread do ROCm e da HIP, como hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
  • Utilizando as funções de bloco do ROCm e da HIP, como __syncthreads, __threadfence_block, etc.
  • Utilização de funções de grelha ROCm e HIP, como hipGridDim_x, hipGridSync, grupos cooperativos, etc.

Depuração

  • Compreender os erros e bugs comuns nos programas ROCm e HIP
  • Utilizar o depurador de código Visual Studio para inspecionar variáveis, pontos de interrupção, pilha de chamadas, etc.
  • Utilizar o ROCm Debugger para depurar programas ROCm e HIP em dispositivos AMD
  • Usando o ROCm Profiler para analisar os programas ROCm e HIP em dispositivos AMD

Otimização

  • Compreender os factores que afectam o desempenho dos programas ROCm e HIP
  • Uso de técnicas de coalescência do ROCm e do HIP para melhorar o rendimento da memória
  • Uso de técnicas de cache e pré-busca de ROCm e HIP para reduzir a latência da memória
  • Utilização de técnicas de memória partilhada e de memória local do ROCm e da HIP para otimizar os acessos à memória e a largura de banda
  • Usar as ferramentas de criação de perfil e de perfilamento do ROCm e da HIP para medir e melhorar o tempo de execução e a utilização de recursos

Resumo e próximo passo

Requisitos

  • Conhecimento da linguagem C/C++ e dos conceitos de programação paralela
  • Conhecimentos básicos 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

  • Programadores que pretendam aprender a utilizar o ROCm e o HIP para programar AMD GPUs e explorar o seu paralelismo
  • Desenvolvedores que desejam escrever código de alto desempenho e escalável que possa ser executado em diferentes dispositivos AMD
  • Programadores que desejam explorar os aspectos de baixo nível da programação GPU e otimizar o desempenho do código
 28 horas

Declaração de Clientes (2)