Objectivos

Fornecer aos alunos noções avançadas da teoria e prática dos modelos de computação orientados para arquitecturas paralelas e distribuídas. Particular ênfase na programação em memória partilhada, na programação com threads e na programação em memória distribuída.

Programa

Fundamentos de Computação Paralela
Concorrência, paralelismo, computações paralelas, computações distribuídas, o problema da granularidade, padrões de comunicação, factores limitativos de performance, modelos de programação.

Programação em Memória Partilhada
Processos, segmentos de memória partilhada, mapeamento de ficheiros em memória partilhada, spinlocks, semáforos.

Programação com Threads
Processos multithreaded, o modelo Pthreads, mutexs, variáveis de condição, chaves, implementações do Pthreads.

Programação em Memória Distribuída
A especificação MPI, troca explícita de mensagens, protocolos de comunicação, tipos derivados e empacotamento de dados, comunicações colectivas, comunicadores.

Bibliografia

Advanced Linux Programming
M. Mitchell, J. Oldham and A. Samuel, New Riders.

Advanced Programming in the UNIX Environment
W.R. Stevens, Addison Wesley.

Pthreads Programming
B. Nichols, D. Buttlar and J.P. Farrell, O'Reilly.

Parallel Programming with MPI
P. Pacheco, Morgan Kaufmann.

Informação Complementar

A User's Guide to MPI

MPI Primer/Developing With LAM

LAM/MPI Parallel Computing

MPI Forum