Programação em Memória Distribuída com o MPI
A especificação MPI, troca explícita de mensagens, protocolos de
comunicação, tipos derivados e empacotamento de dados, comunicações
colectivas, comunicadores, topologias.
Programação em Memória Partilhada com Processos
Processos, segmentos de memória partilhada, mapeamento de ficheiros em
memória partilhada, spinlocks, semáforos.
Programação em Memória Partilhada com o Pthreads
Processos multithreaded com o Pthreads, mutexs, variáveis de condição,
chaves, implementações do Pthreads.
Programação em Memória Partilhada com o OpenMP
A especificação OpenMP, directivas de compilação, constructores de
work-sharing, constructores de sincronização, funções básicas, funções
de locking, variáveis de ambiente, remoção de dependências nos dados.
Programação Híbrida com o MPI e o OpenMP
Estratégias de combinação do MPI com o OpenMP em clusters
multi-processador. Executar o MPI com suporte para multithreading.
Memórias Cache e Arquitecturas Multi-Processador
A importância das caches em arquitecturas multi-processador:
localidade espacial e temporal, sincronização com barreiras e com
exclusão mútua.
Programação para Arquitecturas CUDA
Arquitecturas GPU recentes. Interface de programação de sistemas
CUDA. Exemplos de programas.
Métricas de Desempenho
Medidas de speedup, eficiência, redundância, utilização e qualidade
duma aplicação paralela. Lei de Amdahl. Lei de
Gustafson-Barsis. Métrica de Karp-Flatt. Métrica de isoeficiência.
Algoritmos Paralelos
Estratégias de escalonamento e balanceamento de carga. Paralelização
de algoritmos de ordenação, de algoritmos de procura, de algoritmos
baseados em métodos de Monte Carlo, e de algoritmos para multiplicação
de matrizes.
Parallel Programming in C with MPI and OPenMP
Michael J. Quinn. McGraw-Hill.
Advanced Linux Programming
M. Mitchell, J. Oldham and A. Samuel. New Riders.
Pthreads Programming
B. Nichols, D. Buttlar and J.P. Farrell. O'Reilly.
Parallel Programming in OpenMP
R. Chandra, L. Dagum, D. Kohr, D. Maydan, J. McDonald and R. Menon. Morgan Kaufmann.
Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers
B. Wilkinson, M. Allen. Prentice Hall.