Faculdade de Ciências e Tecnologia

Concorrência e Paralelismo

Código

11158

Unidade Orgânica

Faculdade de Ciências e Tecnologia

Departamento

Departamento de Informática

Créditos

6.0

Professor responsável

João Manuel dos Santos Lourenço, Pedro Abílio Duarte de Medeiros

Horas semanais

4

Total de horas

56

Língua de ensino

Português

Objectivos

Esta é uma unidade curricular do bloco de consolidação do curso. O seu principal objetivo é dar uma panorâmica das abstrações e ferramentas usadas na programação de sistemas com múltiplos processadores.

Saber:
• Identificar os modelos para a resolução de problemas em arquiteturas com múltiplos processadores;
• Conhecer os paradigmas usados no desenvolvimento de algoritmos para as máquinas referidas;
• Avaliar a correção e o desempenho de algoritmos concorrentes e paralelos;
• Conhecer linguagens, bibliotecas e ferramentas usadas no desenvolvimento de programas concorrentes e paralelos.


Saber Fazer:
• Subdividir um problema de forma a adaptá-lo à resolução de forma eficiente;
• Utilizar a linguagem Java no desenvolvimento de aplicações concorrentes;
• Contactar com as ferramentas usadas no ciclo de desenvolvimento de uma aplicação concorrente, nas fases de conceção, implementação, depuração de comportamento e de desempenho e no deployment.

Conteúdo

1. Introdução à execução concorrente
1.1 Abstrações básicas e propriedades da execução concorrente.
1.2 Corridas e interblocagem. Técnicas para as evitar e detetar.
2. Multiprocessadores.
2.1 Taxonomia das arquiteturas de multiprocessadores.
2.2 Coerência de caches em multiprocessadores de memória partilhada.
2.3 Aceleração. Lei de Amdahl.
3. Programação concorrente em memória partilhada.
3.1 Mecanismos básicos de sincronização em memória partilhada.
3.2 Monitores.
3.3 Estruturas de dados concorrentes. Caso de estudo: listas.
4. Transações e Memória Transacional.
4.1 Conceito de transação.
4.2 Controlo de concorrência: princípios e algoritmos.
4.3 Memória transacional em software. Suporte de hardware.
5. Programação paralela.
5.1 Mecanismos básicos de sincronização e comunicação em memória distribuída.
5.2 Estratégias de decomposição.
5.3 Padrões algorítmicos.
5.4 Modelos de programação e seu mapeamento.
5.5 Caso de estudo do modelo Map-Reduce.

Bibliografia

Referência Principal:
[1] Michel Raynal. "Concurrent Programming: Algorithms, Principles, and Foundations". Springer Heidelberg. ISBN: 978-3-642-32026-2(print), 978-3-64232027-9(ebook).

Referências Complementares:
[2] Michael L. Scott. Shared-Memory Synchronization. Synthesis Lectures on Computer Architecture 2013 8:2, 1-221. Morgan&Claypool Publishers. ISBN: 9781608459568 paperback. ISBN: 9781608459575 ebook.
[3] C. Breshears, The Art of Concurrency: A Thread Monkey’s Guide to Writing Parallel Applications. O’Reilly Media, Inc., 2009.
[4] M. Herlihy, N. Shavit. The Art of Multiprocessor Programming. Morgan Kauffman, 2008.
[5] P. Pacheco. An Introduction to Parallel Programming. Morgan Kauffman, 2011
[6] T. Mattson, B. Sanders, B. Massingill. Patterns for Parallel Programming. Addison-Wesley, 2004.

Método de avaliação

A avaliação é contínua e composta por:

a) 3 testes a realizar durante o semestre. A média da clasificação dos testes (sempre arredondadas às centésimas) terá um peso de 70% na classificação final.

b) 2 projetos a realizar em grupo de dois alunos. A média das classificações dos projetos (sempre arredondadas às centésimas) terá um peso de 30% na classificação final.

c) presenção e participação nas aulas teóricas e práticas poderão dar um bónus de mais 10% na classificação final.

Nota: O exame final, quando realizado tanto para aprovação como para melhoria de nota, substitui a componente de avaliação a) no cálculo da classificação final.

Para obter frequência à UC é necessário:

d) obter uma classificação mínima de 6,0 valores em cada um dos projetos.

e) que a média da classificação dos projetos seja superior ou igual a 9,5 valores.

Nota: alunos com frquência do ano anterior podem requerer que a classificação de frequência obtida no ano anterior seja considerrada este ano. 

Para obter aprovação à disciplina é necessário que:

f) ter frequência à diciplina, obtina neste ano ou no ano passado.

g) a média da compoente de avaliação a) seja superior ou igual a 9,5 valores.

h) a classificação final seja superior ou igual a 9,5 valores.

Cursos