2024

Programação Paralela

Nome: Programação Paralela
Cód.: INF13266M
6 ECTS
Duração: 15 semanas/156 horas
Área Científica: Informática

Língua(s) de lecionação: Português
Língua(s) de apoio tutorial: Português

Objetivos de Desenvolvimento Sustentável

Objetivos de Aprendizagem

Pretende-se que o estudante:

- fique a saber as técnicas usadas para resolver o problemas específicos dos algoritmos paralelos;
- fique a conhecer alguns algoritmos paralelos;
- fique a saber analisar o comportamento de algoritmos paralelos;
- consiga desenvolver e programar algoritmos paralelos.

Conteúdos Programáticos

Paralelismo e concorrência
Sistemas para computação paralela
- multicore, multiprocessador, cluster, heterogéneo
- memória partilhada e distribuída
- caches, consistência e coerência
- comunicação e sincronização
Suporte para a programação paralela
- acessos atómicos
- lock, semáforo, monitor
- secção crítica, race
- troca de mensagens
Modelos de programação
- threads Posix
- OpenMP
- MPI
Desenho de algoritmos paralelos
- paralelismo de tasks
- paralelismo de dados
- padrões para paralelismo
Desempenho de programas paralelos

Métodos de Ensino

As aulas dividem-se em aulas teóricas, em que são expostos os problemas e as técnicas a usar, e em que são desenvolvidos e analisados algoritmos, e aulas práticas, onde são usadas as técnicas expostas e onde é proposto aos estudantes o desenvolvimento de algoritmos.

A avaliação é realizada através da elaboração de trabalhos práticos de programação e uso de algoritmos paralelos, e de testes escritos ao longo do semestre ou, em alternativa, de um exame final.

Bibliografia

Parallel programming: for multicore and cluster systems. T. Rauber, G. Rünger. 2010, Springer.

The art of multiprocessor programming. M. Herlihy, N. Shavit. 2008, Morgan Kaufmann.

An introduction to parallel programming. P. Pacheco. 2011, Morgan Kaufmann.

Introduction to Parallel Computing (2nd Edition) Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta. 2003, Addison Wesley.

Equipa Docente (2022/2023 )