Programação Paralela
Ano Lectivo de 2002/2003
Trabalhos Práticos
Aulas Teóricas (em formato ps.gz)
Programas Exemplo (em formato tar.gz)
Aula 3 (2003.03.06)
- Fundamentos
No que consiste a programação
paralela. Paralelismo implícito versus explícito. Decomposição do
domínio versus decomposição funcional. Tipos de partição: regular,
irregular, adaptativa. O problema da granularidade. Padrões de
comunicação: local, global, estruturada, não estruturada, estática,
dinâmica, síncrona e assíncrona. Factores limitativos de
performance. Modelos de programação paralela: memória partilhada
versus memória distribuída.
- Programação em Memória Partilhada
Paralelismo nos
dados. Programação paralela com processos. Comunicação por segmentos
de memória partilhada. Funções da família shm.
Aula 4 (2003.03.13)
- Programação em Memória Partilhada
Mapeamento de
ficheiros em memória. Funções da família mmap. Técnicas avançadas de
mapeamento de memória. Sincronização de processos: locks e
semáforos. A instrução TSL. Família de funções sem.
Aula 5 (2003.03.20)
- Programação com Pthreads
Concorrência com processos
multithreaded. Noção de thread. O modelo Pthreads. Criação, junção e
terminação de threads. Joinable versus detached threads. Cuidados a
ter na utilização de threads. Sincronização e regiões críticas:
mutexs e variáveis de condição. Thread-specific data: chaves e
iniciação única.
Aula 6 (2003.03.27)
- Programação com Pthreads
Implementações do Pthreads:
user threads; kernel threads; two-level scheduler threads. Processos
versus threads.
- Programação em Memória Distribuída
O MPI
(Message-Passing Interface): história, conceitos e objectivos. 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: modo standard,
synchronous, buffered e ready. Comunicações bloqueantes versus não
bloqueantes.
Aula 7 (2003.04.03)
- Programação em Memória Distribuída
Agrupar dados para
comunicação: tipos derivados e empacotamento de dados. Comunicações
colectivas: broadcast, reduce, scatter e gather. Grupos e
comunicadores.
Aula 8 (2003.04.10)
- Programação em Memória Distribuída
Medir o tempo de
execução. O LAM/MPI no cluster Dolphin2. Standard I/O no
LAM. Comandos de sessão do LAM. Compilar, iniciar, monitorizar e
terminar a execução no LAM.
Bibliografia
- Advanced
Linux Programming. M. Mitchell, J. Oldham, A. Samuel. New
Riders. (Biblioteca ref. 344)
- Advanced Programming in the UNIX Environment. W.R.
Stevens. Addison Wesley. (Biblioteca ref. 1796)
- Pthreads Programming. B. Nichols, D. Buttlar, J.P.
Farrell. O'Reilly. (Biblioteca ref. 201)
- Parallel Programming with MPI. P. Pacheco. Morgan
Kaufmann. (Biblioteca ref. 159)
- A User's Guide to MPI (em
formato ps.gz)
- MPI Primer/Developing With
LAM (em formato pdf.gz)
Informação Relevante
Última Actualização: 30 de Junho de 2003