Sumários
Aula 1: 19.09.2017
Apresentação
Considerações gerais sobre o programa, bibliografia, funcionamento das
aulas e método de avaliação.
Aula 2: 21.09.2017
Fundamentos
Programação paralela, concorrência e paralelismo. Taxonomia de
Flynn. Multiprocessadores, multicores e protocolos de coerência das
caches. Multicomputadores.
Aula 3: 26.09.2017
Fundamentos
Metodologia de programação de Foster. Decomposição do domínio e
decomposição funcional. Padrões de comunicação. O problema da
granularidade. Balanceamento de carga. Principais modelos e paradigmas
de programação paralela.
Aula 4: 28.09.2017
Programação em Memória Distribuída com o MPI
O MPI (Message-Passing Interface): história, conceitos e objetivos. O
modelo SPMD (Single Program Multiple Data). Estrutura base de um
programa MPI. O comunicador universal (MPI_COMM_WORLD). Tipos de dados
básicos. Envio e recepção de mensagens em modo standard, modo
synchronous e modo buffered.
Aula 5: 03.10.2017
Programação em Memória Distribuída com o MPI
Envio e recepção simultânea de mensagens. Comunicações bloqueantes
versus não-bloqueantes. Agrupar dados para comunicação. Tipos
derivados. Empacotamento de dados.
Aula 6: 10.10.2017
Programação em Memória Distribuída com o MPI
Resolução de exercícios.
Aula 7: 12.10.2017
Programação em Memória Distribuída com o MPI
Comunicações coletivas: broadcast, reduce, scatter e gather. Criação
de grupos e de comunicadores.
Aula 8: 17.10.2017
Programação em Memória Distribuída com o MPI
Topologias: grelhas cartesianas. Medir o tempo de execução. Análise e
discussão de um exemplo prático de paralelização de uma aplicação para
o cálculo do valor de Pi utilizando o método de Monte Carlo. Standard
I/O, compilação e execução de programas no MPI.
Trabalhos Práticos
Apresentação e discussão do 1º trabalho prático.
Aula 9: 19.10.2017
Programação em Memória Distribuída com o MPI
Resolução de exercícios.