Programa do Curso

Introdução

  • O que é programação de GPU?
  • Por que usar a programação de GPU?
  • Quais são os desafios e trade-offs da programação de GPU?
  • Quais são os frameworks para programação de GPU?
  • Escolhendo o framework certo para sua aplicação

OpenCL

  • O que é OpenCL?
  • Quais são as vantagens e desvantagens do OpenCL?
  • Configurando o ambiente de desenvolvimento para OpenCL
  • Criando um programa básico de OpenCL que realiza adição vetorial
  • Usando a API do OpenCL para consultar informações do dispositivo, alocar e desalocar memória do dispositivo, copiar dados entre o host e o dispositivo, lançar kernels e sincronizar threads
  • Usando a linguagem C do OpenCL para escrever kernels que são executados no dispositivo e manipulam dados
  • Usando funções, variáveis e bibliotecas integradas do OpenCL para realizar tarefas e operações comuns
  • Usando espaços de memória do OpenCL, como global, local, constante e privado, para otimizar transferências de dados e acessos à memória
  • Usando o modelo de execução do OpenCL para controlar os work-items, work-groups e ND-ranges que definem o paralelismo
  • Depurando e testando programas de OpenCL usando ferramentas como CodeXL
  • Otimizando programas de OpenCL usando técnicas como coalescimento, cache, pré-busca e profiling

CUDA

  • O que é CUDA?
  • Quais são as vantagens e desvantagens do CUDA?
  • Configurando o ambiente de desenvolvimento para CUDA
  • Criando um programa básico de CUDA que realiza adição vetorial
  • Usando a API do CUDA para consultar informações do dispositivo, alocar e desalocar memória do dispositivo, copiar dados entre o host e o dispositivo, lançar kernels e sincronizar threads
  • Usando a linguagem C/C++ do CUDA para escrever kernels que são executados no dispositivo e manipulam dados
  • Usando funções, variáveis e bibliotecas integradas do CUDA para realizar tarefas e operações comuns
  • Usando espaços de memória do CUDA, como global, compartilhada, constante e local, para otimizar transferências de dados e acessos à memória
  • Usando o modelo de execução do CUDA para controlar as threads, blocos e grades que definem o paralelismo
  • Depurando e testando programas de CUDA usando ferramentas como CUDA-GDB, CUDA-MEMCHECK e NVIDIA Nsight
  • Otimizando programas de CUDA usando técnicas como coalescimento, cache, pré-busca e profiling

ROCm

  • O que é ROCm?
  • Quais são as vantagens e desvantagens do ROCm?
  • Configurando o ambiente de desenvolvimento para ROCm
  • Criando um programa básico de ROCm que realiza adição vetorial
  • Usando a API do ROCm para consultar informações do dispositivo, alocar e desalocar memória do dispositivo, copiar dados entre o host e o dispositivo, lançar kernels e sincronizar threads
  • Usando a linguagem C/C++ do ROCm para escrever kernels que são executados no dispositivo e manipulam dados
  • Usando funções, variáveis e bibliotecas integradas do ROCm para realizar tarefas e operações comuns
  • Usando espaços de memória do ROCm, como global, local, constante e privado, para otimizar transferências de dados e acessos à memória
  • Usando o modelo de execução do ROCm para controlar as threads, blocos e grades que definem o paralelismo
  • Depurando e testando programas de ROCm usando ferramentas como ROCm Debugger e ROCm Profiler
  • Otimizando programas de ROCm usando técnicas como coalescimento, cache, pré-busca e profiling

Comparação

  • Comparando as características, desempenho e compatibilidade de OpenCL, CUDA e ROCm
  • Avaliando programas de GPU usando benchmarks e métricas
  • Aprendendo as melhores práticas e dicas para programação de GPU
  • Explorando as tendências atuais e futuras e os desafios da programação de GPU

Resumo e Próximos Passos

Requisitos

  • Conhecimento 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 diferentes frameworks para programação de GPU e comparar suas características, desempenho e compatibilidade
  • Desenvolvedores que desejam escrever código portátil e escalável que possa ser executado em diferentes plataformas e dispositivos
  • Programadores que desejam explorar os trade-offs e desafios da programação de GPU e otimização
 28 Horas

Número de participantes


Preço por Participante

Próximas Formações Provisórias

Categorias Relacionadas