Programa do Curso

Introdução

  • O que é a programação GPU?
  • Porquê utilizar a programação GPU?
  • Quais são os desafios e as vantagens e desvantagens da programação GPU?
  • Quais são as estruturas e ferramentas para a programação GPU?
  • Escolher a estrutura e a ferramenta correctas para a sua aplicação

OpenCL

  • O que é OpenCL?
  • Quais são as vantagens e desvantagens de OpenCL?
  • Configurando o ambiente de desenvolvimento para OpenCL
  • Criação de um programa OpenCL básico que executa adição de vectores
  • Usando a API OpenCL para consultar informações do dispositivo, alocar e desalocar memória do dispositivo, copiar dados entre o host e o dispositivo, iniciar kernels e sincronizar threads
  • Utilização da OpenCL linguagem C para escrever kernels que são executados no dispositivo e manipulam dados
  • Utilizar OpenCL funções, variáveis e bibliotecas incorporadas para efetuar tarefas e operações comuns
  • Utilização de OpenCL espaços de memória, como global, local, constante e privado, para otimizar as transferências de dados e os acessos à memória
  • Utilização do modelo de execução OpenCL para controlar os itens de trabalho, os grupos de trabalho e os intervalos ND que definem o paralelismo
  • Depurar e testar programas OpenCL usando ferramentas como o CodeXL
  • Otimização de programas OpenCL usando técnicas como coalescência, armazenamento em cache, pré-busca e criação de perfil

CUDA

  • O que é CUDA?
  • Quais são as vantagens e desvantagens de CUDA?
  • Configurando o ambiente de desenvolvimento para CUDA
  • Criando um programa CUDA básico que executa adição de vetores
  • Usando a API CUDA para consultar informações do dispositivo, alocar e desalocar a memória do dispositivo, copiar dados entre o host e o dispositivo, iniciar kernels e sincronizar threads
  • Usando a linguagem CUDA C/C++ para escrever kernels que executam no dispositivo e manipulam dados
  • Usando funções integradas, variáveis e bibliotecas CUDA para executar tarefas e operações comuns
  • Usar espaços de memória CUDA, como global, compartilhado, constante e local, para otimizar transferências de dados e acessos à memória
  • Usar o modelo de execução CUDA para controlar os threads, blocos e grades que definem o paralelismo
  • Depuração e teste de programas CUDA usando ferramentas como CUDA-GDB, CUDA-MEMCHECK e NVIDIA Nsight
  • Otimização de programas CUDA usando técnicas como coalescência, armazenamento em cache, pré-busca e criação de perfil

ROCm

  • O que é ROCm?
  • Quais são as vantagens e desvantagens do ROCm?
  • Configurando o ambiente de desenvolvimento para ROCm
  • Criação de um programa ROCm básico que executa a adição de vectores
  • Usar a API do ROCm para consultar informações do dispositivo, alocar e desalocar a memória do dispositivo, copiar dados entre o host e o dispositivo, iniciar kernels e sincronizar threads
  • Utilização da linguagem ROCm C/C++ para escrever kernels que são executados no dispositivo e manipulam dados
  • Utilizar as funções, variáveis e bibliotecas incorporadas no ROCm para efetuar tarefas e operações comuns
  • Utilizar os espaços de memória do ROCm, tais como global, local, constante e privado, para otimizar as transferências de dados e os acessos à memória
  • Utilizar o modelo de execução do ROCm para controlar os threads, blocos e grelhas que definem o paralelismo
  • Depurar e testar programas ROCm usando ferramentas como o ROCm Debugger e o ROCm Profiler
  • Otimização de programas ROCm utilizando técnicas como coalescência, armazenamento em cache, pré-busca e criação de perfis

HIP

  • O que é a HIP?
  • Quais são as vantagens e desvantagens do HIP?
  • Configurando o ambiente de desenvolvimento para HIP
  • Criação de um programa HIP básico que executa adição de vectores
  • Utilização da linguagem HIP para escrever kernels que são executados no dispositivo e manipulam dados
  • Utilização de funções, variáveis e bibliotecas incorporadas na HIP para efetuar tarefas e operações comuns
  • Utilização de espaços de memória HIP, como global, partilhado, constante e local, para otimizar as transferências de dados e os acessos à memória
  • Utilização do modelo de execução da HIP para controlar os segmentos, blocos e grelhas que definem o paralelismo
  • Depurar e testar programas HIP usando ferramentas como o ROCm Debugger e o ROCm Profiler
  • Otimização de programas HIP usando técnicas como coalescência, armazenamento em cache, pré-busca e criação de perfil

Comparação

  • Comparação dos recursos, desempenho e compatibilidade de OpenCL, CUDA, ROCm e HIP
  • Avaliação de programas GPU usando benchmarks e métricas
  • Aprender as melhores práticas e dicas para programação GPU
  • Explorar as tendências e desafios atuais e futuros da programação GPU

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 os conceitos básicos de programação GPU e as principais estruturas e ferramentas para o desenvolvimento de aplicações GPU
  • Programadores que pretendam escrever código portátil e escalável que possa ser executado em diferentes plataformas e dispositivos
  • Programadores que desejam explorar os benefícios e desafios da programação GPU e da otimização
 21 horas

Número de participantes



Preço por participante

Declaração de Clientes (1)

Categorias Relacionadas