Programa do Curso

Introdução

  • O que é o OpenACC?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • Visão geral das funcionalidades e arquitetura do OpenACC
  • Configurando o ambiente de desenvolvimento

Iniciando

  • Criando um projeto do OpenACC no Visual Studio Code
  • Explorando a estrutura do projeto e os arquivos
  • Compilando e executando o programa
  • Exibindo saída com printf e fprintf

Diretivas e Cláusulas do OpenACC

  • Compreendendo diretivas e cláusulas do OpenACC
  • Usando diretivas paralelas para criar regiões paralelas
  • Usando diretivas de kernels para paralelismo gerenciado pelo compilador
  • Usando diretivas de loop para paralelizar loops
  • Gestão de movimentação de dados com diretivas de dados
  • Sincronização de dados com diretivas de atualização
  • Melhoria da reutilização de dados com diretivas de cache
  • Criação de funções de dispositivo com diretivas de rotina
  • Sincronização de eventos com diretivas de espera

API do OpenACC

  • Compreendendo o papel da API do OpenACC
  • Consultando informações e capacidades do dispositivo
  • Definindo número e tipo de dispositivo
  • Lidando com erros e exceções
  • Criando e sincronizando eventos

Bibliotecas e Interoperabilidade do OpenACC

  • Compreendendo as bibliotecas e interoperabilidade do OpenACC
  • Usando bibliotecas de matemática, aleatórias e complexas
  • Integrando com outros modelos (CUDA, OpenMP, MPI)
  • Integrando com bibliotecas de GPU (cuBLAS, cuFFT)

Ferramentas do OpenACC

  • Compreendendo as ferramentas do OpenACC no desenvolvimento
  • Perfilar e depurar programas do OpenACC
  • Análise de desempenho com compilador PGI, NVIDIA Nsight Systems, Allinea Forge

Otimização

  • Fatores que afetam o desempenho do programa do OpenACC
  • Otimizando localidade de dados e reduzindo transferências
  • Otimizando paralelismo e fusão de loops
  • Otimizando paralelismo e fusão de kernels
  • Otimizando vetorização e auto-ajuste

Resumo e Próximos Passos

Requisitos

  • Compreensão da linguagem C/C++ ou Fortran 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 o OpenACC para programar dispositivos heterogêneos e explorar seu paralelismo
  • 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 aspectos de alto nível da programação heterogênea e otimizar a produtividade do seu código
 28 Horas

Número de participantes


Preço por Participante

Próximas Formações Provisórias

Categorias Relacionadas