Obrigado por enviar sua consulta! Um dos membros da nossa equipe entrará em contato com você em breve.
Obrigado por enviar sua reserva! Um dos membros da nossa equipe entrará em contato com você em breve.
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