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 é o OpenACC?
- OpenACC versus OpenCL versus CUDA versus SYCL
- Visão geral das funcionalidades e arquitetura do OpenACC
- Configuração do ambiente de desenvolvimento
Primeiros Passos
- Criação de um projeto OpenACC no Visual Studio Code
- Exploração da estrutura e dos arquivos do projeto
- Compilação e execução do programa
- Exibição de saída usando printf e fprintf
Diretrizes e Clausulas do OpenACC
- Compreensão das diretrizes e clausulas do OpenACC
- Uso de diretrizes de paralelismo para criar regiões paralelas
- Uso de diretrizes de kernels para paralelismo gerenciado pelo compilador
- Uso de diretrizes de loop para paralelizar loops
- Gestão do movimento de dados com diretrizes de dados
- Sincronização de dados com diretrizes de atualização
- Melhoria da reutilização de dados com diretrizes de cache
- Criação de funções de dispositivo com diretrizes de rotina
- Sincronização de eventos com diretrizes de espera
API do OpenACC
- Compreensão do papel da API do OpenACC
- Consulta de informações e capacidades do dispositivo
- Definição do número e tipo do dispositivo
- Tratamento de erros e exceções
- Criação e sincronização de eventos
Bibliotecas do OpenACC e Interoperabilidade
- Compreensão das bibliotecas e da interoperabilidade do OpenACC
- Uso de bibliotecas matemáticas, aleatórias e complexas
- Integração com outros modelos (CUDA, OpenMP, MPI)
- Integração com bibliotecas de GPU (cuBLAS, cuFFT)
Ferramentas do OpenACC
- Compreensão das ferramentas do OpenACC no desenvolvimento
- Profiling e depuração de programas em OpenACC
- Análise de desempenho com o compilador PGI, NVIDIA Nsight Systems e Allinea Forge
Otimização
- Fatores que afetam o desempenho de programas em OpenACC
- Otimização da localidade de dados e redução de transferências
- Otimização do paralelismo de loops e fusão
- Otimização do paralelismo de kernels e fusão
- Otimização da vetorização e ajuste automático (auto-tuning)
Resumo e Próximos Passos
Requisitos
- Compreensão da linguagem C/C++ ou Fortran e dos 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 o OpenACC para programar dispositivos heterogêneos e explorar seu paralelismo.
- Desenvolvedores que desejam escrever código portátil e escalável, capaz de executar em diferentes plataformas e dispositivos.
- Programadores que desejam explorar os aspectos de alto nível da programação heterogênea e otimizar a produtividade do seu código.
28 Horas