Computação Paralela e Distribuída
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Engenharia Informática e Computação |
Ocorrência: 2022/2023 - 2S 
Ciclos de Estudo/Cursos
Sigla |
Nº de Estudantes |
Plano de Estudos |
Anos Curriculares |
Créditos UCN |
Créditos ECTS |
Horas de Contacto |
Horas Totais |
L.EIC |
260 |
Plano Oficial |
3 |
- |
6 |
52 |
162 |
Docência - Responsabilidades
Docência - Horas
Tipo |
Docente |
Turmas |
Horas |
Teóricas |
Totais |
2 |
4,00 |
Jorge Manuel Gomes Barbosa |
|
1,70 |
Carlos Miguel Ferraz Baquero-Moreno |
|
1,00 |
Pedro Alexandre Guimarães Lobo Ferreira Souto |
|
1,30 |
Teórico-Práticas |
Totais |
11 |
22,00 |
Carlos Miguel Ferraz Baquero-Moreno |
|
4,00 |
Nuno Gonçalo Neto Martingo |
|
4,00 |
António Jesus Monteiro de Castro |
|
6,00 |
Pedro Miranda de Andrade de Albuquerque d'Orey |
|
4,00 |
Vítor Gabriel dos Reis Machado Rodrigues |
|
2,00 |
Jorge Manuel Gomes Barbosa |
|
2,00 |
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
Dotar os estudantes com:
- conhecimentos conducentes à utilização simultânea de várias unidades de processaento num sistema de computação;
- bases sólidas sobre paralelização de algoritmos, modelos de programação, sincronização de processos e medidas de desempenho, através do desenvolvimento de programas;
- conhecimentos teóricos sobre sistemas distribuídos para que possam tomar decisões correctas quando confrontados com a necessidade de conceber/desenvolver/administrar um sistema ou aplicação distribuídos;
- experiência de programação para que possam desenvolver aplicações distribuídas.
Resultados de aprendizagem e competências
Após conclusão desta UC, os estudantes deverão ser capazes de:
- Analisar um problema e identificar o modelo de paralelização mais adequado;
- Escrever programas segundo o modelo de memória partilhada;
- Elaborar soluções paralelas para novos problemas;
- Utilizar modelos computacionais para estimar o tempo de computação das aplicações;
- Conhecer boas práticas para efetuar partilha de recursos entre processos concorrentes;
- Explicar as implicações da latência de comunicação, falhas parciais e assincronia numa aplicação distribuída;
- Implementar uma aplicação distribuída quer recorrendo a "threads" quer usando uma abordagem orientada a eventos;
- Identificar aplicações práticas de algoritmos básicos de sincronização, como eleições, e explicar porque pequenas alterações nesses algoritmos, podem quebrá-los;
- Explicar o funcionamento de algoritmos básicos de tolerância a falhas e das garantias por eles dadas;
- Compreender a utilidade e o desafio da replicação de dados/serviços em aplicações distribuídas;
- Avaliar os compromissos entre desempenho, tolerância a falhas e consistência em serviços replicados.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
Sistemas Operativos
Redes de Computadores
Programa
Introdução à computação paralela. Medidas de desempenho.
Máquinas paralelas. Organização de memória e efeito da gestão da memória cache no desempenho do processador.
Limitações da computação paralela (Amdahl Law).
Tipos de paralelismo: funcional, de dados e em “streams”. Metodologias para paralelização de algoritmos.
Modelos de programação paralela: Memória Partilhada e Memória Distribuída.
Problemas de concorrência. Programação de multi-cores pelo modelo de memória partilhada utilizando OpenMP. Modelos de Computação.
Introdução à computação distribuída.
Modelos de comunicação: troca de mensagens, invocação remota de funções. Comunicação multicast.
Processamento em sistemas distribuídos. Serviços com manutenção de estado. Implementações concorrentes baseadas em eventos vs. “threads”.
Tolerância a falhas. Algoritmos de eleição. Protocolo “two-phase commit”. Protocolo primário-apoio ("primary-backup").
Técnicas básicas para aumentar a escalabilicade. Estudo de caso: Domain Name System (DNS).
Bibliografia Obrigatória
M. van Steen and A. S. Tanenbaum;
Distributed systems, 3rd Ed., 2017 (https://www.distributed-systems.net/index.php/books/ds3/)
Bibliografia Complementar
Michael J. Quinn;
Parallel programming in C with MPI and openMP. ISBN: 007-123265-6
George Coulouris;
Distributed systems. ISBN: 0-201-61918-0
Andrew S. Tanenbaum;
Distributed systems. ISBN: 0-13-613553-6
Ruud van der Pas, Eric Stotzer, Christian Terboven; Using OpenMP—The Next Step: Affinity, Accelerators, Tasking, and SIMD, MIT Press, 2017. ISBN: 9780262534789
Métodos de ensino e atividades de aprendizagem
As aulas teóricas são de exposição. Sempre que necessário, exemplos que ajudem à compreensão dos tópicos serão apresentados. A matéria exposta segue de perto a bibliografia principal recomendada. Para complementar, em tópicos muito pontuais, serão fornecidos apontamentos ou artigos.
Ao longo do semestre serão propostos problemas de programação e outros para consolidação dos conceitos apresentados nas aulas teóricas. Estes problemas serão discutidos nas aulas teórico-práticas, mas espera-se que os estudantes os resolvam fora das aulas. Os estudantes deverão ainda realizar 2 pequenos projetos, onde deverão aplicar os conceitos apresentados nas aulas teóricas.Software
git
JDK
Go
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Designação |
Peso (%) |
Exame |
55,00 |
Trabalho prático ou de projeto |
45,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Estudo autónomo |
60,00 |
Frequência das aulas |
52,00 |
Trabalho laboratorial |
50,00 |
Total: |
162,00 |
Obtenção de frequência
Para admissão ao exame final é obrigatório:
1) Frequentar pelo menos 75% das aulas TP previstas;
2) Ter uma classificação mínima de 8 valores em cada um dos projetos
3) Ter uma classificação mínima de 10 na média ponderada dos projectos
4) Apresentar/demonstrar os projetos
5) Preencher os formulários de auto-avaliação/avaliação de pares de cada projeto
Fórmula de cálculo da classificação final
min( 0,45PP + 0,55ET, 1,2ET)
onde:
PP - Média ponderada dos projetos
ET - Classificação do Exame Teórico
sendo:
PP = 0,4*PPP + 0,6*PPD
onde:
PPP- Classificação do projeto de programação paralela
PPD- Classificação do projeto de programação distribuída
Embora os projetos sejam realizado em grupos, membros do mesmo grupo podem ter classificações diferentes dependendo da sua contribuição.
Avaliação especial (TE, DA, ...)
Idêntica à dos estudantes em regime normal.
Os estudantes em regime especial devem contactar o regente da unidade curricular para agendarem as datas da avaliação referentes aos projectos.
Melhoria de classificação
A melhoria da classificação do exame teórico é realizada mediante submissão a outro exame teórico semelhante ao da época normal (e com o mesmo peso) nas épocas previstas para o efeito.
A melhoria da classificação dos projectos só pode ser realizada na ocorrência seguinte da UC.
Observações
As aulas poderão ser dadas em Inglês se houver estudantes que não sabem português.