Paradigmas da Computação Paralela João Luís Sobral |
Programa
Introdução
Evolução das arquiteturas de computadores
Níveis e tipos de paralelismo
Paradigmas vs linguagens de programação
Linguagens baseadas em diretivas, extensões e bibliotecas
Programação baseada no paradigma de memória partilhada
OpenMP
Java "threads"
Modelos de consistência de memória
Medição de otimização de desempenho em memória partilhada
Programação baseada no paradigma de memória distribuída
Processos comunicantes (MPI)
Objetos distribuídos, cliente/servidor
Desenho de aplicações paralelas
Padrões comuns de computação
Medição e otimização de desempenho em memória partilhada
Programação baseada em modelos híbridos
Modelo híbridos MPI + OpenMP
Modelos de memória virtual partilhada (virtual shared memory)
Modelo global com partições (partitioned global address space)
Sumários
Semana 1 pdf
19-Setembro-2017, 14h-17h
T: Introdução ao módulo de paradigmas de computação paralela: resultados da aprendizagem, programa e avaliação.
TP: Apresentação do planeamento da disciplina
Semana 2
26-Setembro-2017, 14h-17h
T: Introdução aos "clusters" de computação.
TP: Visita à infra-estrutura Search
Semana 3 pdf
03-Outubro-2017, 14h-17h
T: Introdução à programação de sistemas de memória partilhada: OpenMP.
TP: Exploração de paralelismo em OpenMP: análise do vários construtores da linguagem
Semana4 pdf
10-Outubro-2017, 14h-17h
T: Análise do standard OpenMP 4.0: afinidade de fios de execução, seções de vetores, dependências entre tarefas, suporte a vetorização e a aceleradores externos.
TP: exploração de paralelismo com OpenMP
Semana 5 pdf
17-Outubro-2017, 14h-17h
T: Programação concorrente: Segurança e vivacidade. Programação concorrente em linguagens orientadas ao objeto. Programação concorrente em Java. Extensões de concorrência introduzidas em Java 5 e Java 8.
TP: Estudo das primitivas de programação concorrente em Java
Semana 6 pdf
24-Outubro-2017, 14h-17h
T: Optimização de aplicações em sistemas de memória partilhada: análise da principais limitações à escalabilidade das aplicações (limite de largura de banda da memória, sobrecarga de paralelismo/excesso de sincronização, falta balanceamento da carga computacional).
TP: Otimização de programas OpenMP. Apresentação do primeiro trabalho prático da disciplina.
Semana 7 pdf
31-Outubro-2017, 14h-17h
T: Paradigma de programação baseada em passagem de mensagens. Introdução ao standard MPI (Message Passing Interface).
TP: Codificação de algoritmos paralelos no standard MPI.
Semana 8 pdf
7-Novembro-2017, 14h-17h
T: “Middleware” para aplicações paralelas/distribuídas.: identificação, comunicação e ciclo de vida das entidades. Estudo do Java RMI e .Net “remoting”. Comparação com o paradigma de passagem de mensagens.
TP: Análise do Java RMI, em particular a sua implementação através de passagem de mensagens.
Semana 9 pdf
14-Novembro-2017, 14h-17h
T: Metodologia de desenvolvimento de aplicações paralelas: partição, identificação de comunicação, aglomeração e mapeamento. Análise dos tipos de algoritmos paralelos mais comuns: “heartbeat”, “master-slave”, “divide & conquer” e “pipeline”.
TP: Codificação de padrões comuns de computação no standard MPI.
Semana 10 pdf
21-Novembro-2017, 14h-17h
T: Medição e optimização do desempenho das aplicações paralelas: Modelos de desempenho, análise da escalabilidade das aplicações
TP: Estudo do impacto do balanceamento da carga e da sobrecarga do comunicação numa implementação paralela do crivo de Eratóstenes
Semana 11 pdf
28-Novembro-2017, 14h-17h
T: Modelos de consistência de memória. Análise do modelo do OpenMP e do Java. Sistemas de memória partilhada distribuída (DSM).
TP: Estudo do modelo de consistência de memória do OpenMP
Semana 12 pdf
05-Dezembro-2017, 14h-17h
T: Modelos de programação híbridos: Combinação de passagem de mensagens com memória partihlas e “Partitioned Global Address Space (PGAS)”.
TP: Análise e implementação híbrida (MPI/OpenMP) do crivo de Eratóstenes
Semana 13
12-Dezembro-2017, 14h-17h
T: Apresentação do trabalho pratico 2 (MPI).
TP: Apresentação do trabalho pratico 2 (MPI).