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 é OpenACC?
- OpenACC vs OpenCL vs CUDA vs SYCL
- Visão geral dos recursos e da arquitetura do OpenACC
- Configurando o ambiente de desenvolvimento
Primeiros passos
- Criando um novo projeto OpenACC usando Visual Studio Código
- Explorando a estrutura e os arquivos do projeto
- Compilando e executando o programa
- Exibindo a saída usando printf e fprintf
Diretivas e cláusulas OpenACC
- Compreender o papel das directivas e cláusulas OpenACC no código do anfitrião e do dispositivo
- Usando a diretiva e as cláusulas paralelas do OpenACC para criar regiões paralelas e especificar o número de grupos, trabalhadores e vetores
- Utilizar a diretiva e as cláusulas OpenACC kernels para criar regiões kernels e deixar o compilador decidir o paralelismo
- Usando a diretiva e as cláusulas de loop do OpenACC para paralelizar loops e especificar a distribuição, o colapso, a redução e o tile do loop
- Usando a diretiva e as cláusulas de dados OpenACC para gerenciar o movimento de dados e as regiões de dados
- Utilizar a diretiva e as cláusulas de atualização OpenACC para sincronizar dados entre o anfitrião e o dispositivo
- Utilização da diretiva e das cláusulas de cache OpenACC para melhorar a reutilização e a localidade dos dados
- Utilização da diretiva e das cláusulas de rotina OpenACC para criar funções de dispositivo e especificar o tipo de função e o comprimento do vetor
- Utilização da diretiva e cláusulas de espera OpenACC para sincronizar eventos e dependências
API OpenACC
- Compreender o papel da API OpenACC no programa anfitrião
- Usar a API OpenACC para consultar informações e capacidades do dispositivo
- Usar a API OpenACC para definir o número e o tipo de dispositivo
- Utilizar a API OpenACC para tratar erros e excepções
- Utilização da API OpenACC para criar e sincronizar eventos
Bibliotecas OpenACC e interoperabilidade
- Compreender o papel das bibliotecas OpenACC e das funcionalidades de interoperabilidade no programa do dispositivo
- Utilizar as bibliotecas OpenACC, tais como math, random e complex, para efetuar tarefas e operações comuns
- Usar os recursos de interoperabilidade do OpenACC, como deviceptr, use_device e acc_memcpy, para integrar o OpenACC a outros modelos de programação, como CUDA, OpenMP e MPI
- Usando recursos de interoperabilidade do OpenACC, como host_data e declare, para integrar o OpenACC com bibliotecas GPU, como cuBLAS e cuFFT
Ferramentas OpenACC
- Compreender o papel das ferramentas OpenACC no processo de desenvolvimento
- Usar ferramentas OpenACC para criar perfis e depurar programas OpenACC e identificar gargalos e oportunidades de desempenho
- Usar ferramentas OpenACC, como PGI Compiler, NVIDIA Nsight Systems e Allinea Forge, para medir e melhorar o tempo de execução e a utilização de recursos
Otimização
- Compreender os factores que afectam o desempenho dos programas OpenACC
- Utilizar directivas e cláusulas OpenACC para otimizar a localidade dos dados e reduzir as transferências de dados
- Usar as diretivas e cláusulas do OpenACC para otimizar o paralelismo e a fusão de loop
- Usando as diretivas e cláusulas do OpenACC para otimizar o paralelismo e a fusão do kernel
- Usando as diretivas e cláusulas do OpenACC para otimizar a vetorização e o auto-tuning
Resumo e próximos passos
Requisitos
- Conhecimento da linguagem C/C++ ou Fortran e dos conceitos de programação paralela
- Conhecimento básico da arquitetura dos computadores e da hierarquia da memória
- Experiência com ferramentas de linha de comando e editores de código
Público-alvo
- Programadores que pretendam aprender a utilizar o OpenACC para programar dispositivos heterogéneos e explorar o seu paralelismo
- Programadores que pretendam 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
Declaração de Clientes (2)
Muito interativo com vários exemplos, com uma boa progressão de complexidade entre o início e o fim da formação.
Jenny - Andheo
Curso - GPU Programming with CUDA and Python
Máquina Traduzida
A energia e o humor dos formadores.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Curso - NVIDIA GPU Programming - Extended
Máquina Traduzida