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, Inglês
Língua(s) de apoio tutorial: Português, Inglês
Regime de Frequência: Presencial
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.
- 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
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.
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.
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
- Vasco Fernando de Figueiredo Tavares Pedro [responsável]