Programa do Curso

Introdução

  • O que é a programação de GPU?
  • Por que usar a programação de GPU?
  • Quais são os desafios e as 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 sobre o dispositivo, alocar e desalocar memória do dispositivo, copiar dados entre host e dispositivo, lançar kernels e sincronizar threads
  • Usando a linguagem C de OpenCL para escrever kernels que executam no dispositivo e manipulam os dados
  • Usando funções embutidas do OpenCL, variáveis e bibliotecas para realizar tarefas e operações comuns
  • Usando espaços de memória do OpenCL, como global, local, constante e privada, para otimizar transferências de dados e acessos à memória
  • Usando o modelo de execução do OpenCL para controlar os work-items, grupos de trabalho e ND-ranges que definem a paralelização
  • Depurando e testando programas de OpenCL usando ferramentas como CodeXL
  • Otimizando programas de OpenCL usando técnicas como coalescimento, cacheamento, prefetching e perfil

CUDA

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

ROCm

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

Comparação

  • Comparando as características, desempenho e compatibilidade do OpenCL, CUDA e ROCm
  • Avaliando programas de GPU usando benchmarks e métricas
  • Aprendendo práticas recomendadas e dicas para a programação de GPU
  • Explorando as tendências atuais e futuras e 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 GPU programação e comparar suas características, desempenho e compatibilidade
  • Desenvolvedores que desejam escrever código portátil e escalável que pode ser executado em diferentes plataformas e dispositivos
  • Programadores que desejam explorar os trade-offs e desafios da programação GPU e otimização
 28 Horas

Número de participantes


Preço por Participante

Próximas Formações Provisórias

Categorias Relacionadas