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: 2021/2022 - 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 233 Plano Oficial 3 - 6 52 162

Docência - Responsabilidades

Docente Responsabilidade
Jorge Manuel Gomes Barbosa Regente
Pedro Alexandre Guimarães Lobo Ferreira Souto Regente
Mais informaçõesA ficha foi alterada no dia 2022-02-21.

Campos alterados: Fórmula de cálculo da classificação final, Componentes de Avaliação e Ocupação, Obtenção de frequência, 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 os riscos de segurança em aplicações distribuídas que podem ser mitigados por canais seguros;
  • Identificar os protocolos e mecanismos  criptográficas necessários para a implementação desses canais;
  • 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.

Segurança na comunicação. Ameaças e ataques. Canais de Comunicação seguros. 

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

JDK
git

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

Não ultrapassagem do número limite de faltas .

Fórmula de cálculo da classificação final

min( 0,45 PP + 0,55ET, 1.15PP, 1.15ET)
onde:
PP - Nota global dos projetos
ET - Classificação do Exame Teórico

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 ao projecto.

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 do projecto final 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-2023 © 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: 2023-06-08 às 23:51:49 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias