Professor: Pedro Pais Lopes (Exaflop)
Horarios: Terça 19/01 de 13:30h às 17:30h
Objetivo: Processadores com centenas a milhares de núcleos de processamento estão presentes no cotidiano da computação. Este número expressivo de núcleos estão em placas gráficas (denominadas GPUs) como também em aceleradores x86 (como os Xeon Phi) ou mesmo em chips ARM, com arquiteturas complexas de acesso a memória e de operações de ponto flutuante. A programação para utilizar este grande poder de processamento pode envolver linguagens especializadas, o que demanda profunda modificação do programa e possivelmente redução da sua portabilidade. Padrões de programação baseadas em diretivas, amplamente utilizadas para expor paralelismo em arquitetura de memória central, surgiram ou foram expandidos para permitir expor o paralelismo destes processadores massivamente paralelos.
Neste minicurso serão tratados os padrões existentes (OpenACC e OpenMP v4.5), suas principais diretivas, compiladores com suporte a estes padrões e desempenho obtido em aplicações simples em algumas arquiteturas (GPU, CPU multicore e Xeon Phi).
Ementa:
- Introdução aos conceitos de processamento paralelo
- Diretivas de compilação
- Formato de diretivas
- Condicional de compilação
- Construtores paralelos
- Construtores de compartilhamento de trabalho
- Construtores combinados
- Clausulas
- Diretivas de sincronização
- Funções de ambiente de execução
- Funções de bloqueio
- Funções do tempo
- Variáveis de ambiente.
- Escoamento monofásico