Entrar em Contato

Programa do Curso

Introdução

  • O que é programação de GPU?
  • Por que usar programação de GPU?
  • Quais são os desafios e compensações 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 de vetores
  • Utilizando a API do OpenCL para consultar informações do dispositivo, alocar e liberar memória do dispositivo, copiar dados entre host e dispositivo, lançar kernels e sincronizar threads
  • Utilizando a linguagem C do OpenCL para escrever kernels que executam no dispositivo e manipulam dados
  • Utilizando funções internas, variáveis e bibliotecas do OpenCL para realizar tarefas e operações comuns
  • Utilizando os espaços de memória do OpenCL, como global, local, constante e privado, para otimizar transferências de dados e acessos à memória
  • Utilizando 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 coalescência, cacheamento, pré-busca (prefetching) e perfilamento (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 de vetores
  • Utilizando a API do CUDA para consultar informações do dispositivo, alocar e liberar memória do dispositivo, copiar dados entre host e dispositivo, lançar kernels e sincronizar threads
  • Utilizando a linguagem C/C++ do CUDA para escrever kernels que executam no dispositivo e manipulam dados
  • Utilizando funções internas, variáveis e bibliotecas do CUDA para realizar tarefas e operações comuns
  • Utilizando os espaços de memória do CUDA, como global, compartilhado, constante e local, para otimizar transferências de dados e acessos à memória
  • Utilizando 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 coalescência, cacheamento, pré-busca (prefetching) e perfilamento (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 de vetores
  • Utilizando a API do ROCm para consultar informações do dispositivo, alocar e liberar memória do dispositivo, copiar dados entre host e dispositivo, lançar kernels e sincronizar threads
  • Utilizando a linguagem C/C++ do ROCm para escrever kernels que executam no dispositivo e manipulam dados
  • Utilizando funções internas, variáveis e bibliotecas do ROCm para realizar tarefas e operações comuns
  • Utilizando os espaços de memória do ROCm, como global, local, constante e privado, para otimizar transferências de dados e acessos à memória
  • Utilizando 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 coalescência, cacheamento, pré-busca (prefetching) e perfilamento (profiling)

Comparação

  • Comparando as funcionalidades, desempenho e compatibilidade do 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

  • 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 diferentes frameworks para programação de GPU e comparar suas funcionalidades, 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 as compensações e desafios da programação e otimização de GPU
 28 Horas

Número de participantes


Preço por participante

Próximas Formações Provisórias

Categorias Relacionadas