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 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