Entrar em Contato

Programa do Curso

Introdução

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

OpenCL

  • O que é OpenCL?
  • Quais são as vantagens e desvantagens do OpenCL?
  • Configuração do ambiente de desenvolvimento para OpenCL.
  • Criação de um programa básico em OpenCL que realiza adição de vetores.
  • Uso da API do OpenCL para consultar informações do dispositivo, alocar e liberar memória do dispositivo, copiar dados entre o host e o dispositivo, lançar kernels e sincronizar threads.
  • Uso da linguagem C do OpenCL para escrever kernels que são executados no dispositivo e manipulam dados.
  • Uso de funções internas, variáveis e bibliotecas do OpenCL para realizar tarefas e operações comuns.
  • Uso dos espaços de memória do OpenCL, como global, local, constante e privado, para otimizar transferências de dados e acessos à memória.
  • Uso do modelo de execução do OpenCL para controlar os work-items, work-groups e ND-ranges que definem o paralelismo.
  • Depuração e teste de programas OpenCL usando ferramentas como CodeXL.
  • Otimização de programas OpenCL usando técnicas como coalescimento, cacheamento, prefetching e profiling.

CUDA

  • O que é CUDA?
  • Quais são as vantagens e desvantagens do CUDA?
  • Configuração do ambiente de desenvolvimento para CUDA.
  • Criação de um programa básico em CUDA que realiza adição de vetores.
  • Uso da API do CUDA para consultar informações do dispositivo, alocar e liberar memória do dispositivo, copiar dados entre o host e o dispositivo, lançar kernels e sincronizar threads.
  • Uso da linguagem C/C++ do CUDA para escrever kernels que são executados no dispositivo e manipulam dados.
  • Uso de funções internas, variáveis e bibliotecas do CUDA para realizar tarefas e operações comuns.
  • Uso dos espaços de memória do CUDA, como global, compartilhado, constante e local, para otimizar transferências de dados e acessos à memória.
  • Uso do modelo de execução do CUDA para controlar as threads, blocos e grids 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 coalescimento, cacheamento, prefetching e profiling.

ROCm

  • O que é ROCm?
  • Quais são as vantagens e desvantagens do ROCm?
  • Configuração do ambiente de desenvolvimento para ROCm.
  • Criação de um programa básico em ROCm que realiza adição de vetores.
  • Uso da API do ROCm para consultar informações do dispositivo, alocar e liberar memória do dispositivo, copiar dados entre o host e o dispositivo, lançar kernels e sincronizar threads.
  • Uso da linguagem C/C++ do ROCm para escrever kernels que são executados no dispositivo e manipulam dados.
  • Uso de funções internas, variáveis e bibliotecas do ROCm para realizar tarefas e operações comuns.
  • Uso dos espaços de memória do ROCm, como global, local, constante e privado, para otimizar transferências de dados e acessos à memória.
  • Uso do modelo de execução do ROCm para controlar as threads, blocos e grids que definem o paralelismo.
  • Depuração e teste de programas ROCm usando ferramentas como ROCm Debugger e ROCm Profiler.
  • Otimização de programas ROCm usando técnicas como coalescimento, cacheamento, prefetching e profiling.

HIP

  • O que é HIP?
  • Quais são as vantagens e desvantagens do HIP?
  • Configuração do ambiente de desenvolvimento para HIP.
  • Criação de um programa básico em HIP que realiza adição de vetores.
  • Uso da linguagem HIP para escrever kernels que são executados no dispositivo e manipulam dados.
  • Uso de funções internas, variáveis e bibliotecas do HIP para realizar tarefas e operações comuns.
  • Uso dos espaços de memória do HIP, como global, compartilhado, constante e local, para otimizar transferências de dados e acessos à memória.
  • Uso do modelo de execução do HIP para controlar as threads, blocos e grids que definem o paralelismo.
  • Depuração e teste de programas HIP usando ferramentas como ROCm Debugger e ROCm Profiler.
  • Otimização de programas HIP usando técnicas como coalescimento, cacheamento, prefetching e profiling.

Comparação

  • Comparação dos recursos, desempenho e compatibilidade do OpenCL, CUDA, ROCm e HIP.
  • Avaliação de programas GPU usando benchmarks e métricas.
  • Aprendizado das melhores práticas e dicas para programação para GPU.
  • Exploração das tendências atuais e futuras, bem como dos desafios da programação para 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 os fundamentos da programação para GPU, bem como os principais frameworks e ferramentas para o desenvolvimento de aplicações voltadas para GPU.
  • 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 benefícios e desafios da programação para GPU e otimização.
 21 Horas

Número de participantes


Preço por participante

Próximas Formações Provisórias

Categorias Relacionadas