Saltar para:
Logótipo
Você está em: Início > L.EIC028

Computação Paralela e Distribuída

Código: L.EIC028     Sigla: CPD

Áreas Científicas
Classificação Área Científica
OFICIAL Engenharia Informática e Computação

Ocorrência: 2022/2023 - 2S Ícone do Moodle

Ativa? Sim
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Licenciatura em Engenharia Informática e Computação

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
Mais informaçõesA ficha foi alterada no dia 2023-01-31.

Campos alterados: Resultados de aprendizagem e competências, Fórmula de cálculo da classificação final, Avaliação especial, Software de apoio à Unidade Curricular, Obtenção de frequência, Programa, Melhoria de classificação

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.
Recomendar Página Voltar ao Topo
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2024-10-26 às 10:13:39 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias