Disciplina
Computação Paralela e Distribuída
Área
Área Científica de Metodologia e Tecnologias da Programação > Algoritmia
Activa nos planos curriculares
Min-CED 2021 > Min-CED 2021 > Computação Paralela e Distribuída
MEEC 2021 > MEEC 2021 > 2º Ciclo > Opções Livres > Áreas Secundárias > Área Secundária - Sistemas de Computação > Computação Paralela e Distribuída
MEIC-T 2021 > MEIC-T 2021 > 2º Ciclo > Área Principal > Agrupamentos > Sistemas Distribuídos > Computação Paralela e Distribuída
MECD2019 > MECD2019 > 2º Ciclo > Opções > Computação Paralela e Distribuída
MEIC-T 2015 > MEIC-T 2015 > 2º Ciclo > Agrupamentos > Sistemas Distribuídos > Computação Paralela e Distribuída
MEIC-A 2021 > MEIC-A 2021 > 2º Ciclo > Area Principal > Agrupamentos > Sistemas Distribuídos > Computação Paralela e Distribuída
MEIC-A 2015 > MEIC-A 2015 > 2º Ciclo > Agrupamentos > Sistemas Distribuídos > Computação Paralela e Distribuída
MEEC 2006 > MEEC 2006 > 2º Ciclo > Área de Especialização > Área de Especialização Secundária > Computadores > Computação Paralela e Distribuída
MERC 2006 > MERC 2006 > 2º Ciclo > Área de Especialização Complementar > Programação em Redes > Computação Paralela e Distribuída
DEAEngCmp2007 > DEAEngCmp2007 > 3º Ciclo > Obrigatórias > Computação Paralela e Distribuída
MEIC-A 2006 > MEIC-A 2006 > 2º Ciclo > Área de Especialização Complementar > Sistemas Distribuídos > Computação Paralela e Distribuída
Nível
Exame 40%, Projecto 60%. Nota mínima de 7,5 em cada componente.
Tipo
Não Estruturante
Regime
Semestral
Carga Horária
1º Semestre
2.0 h/semana
1.5 h/semana
119.0 h/semestre
Objectivos
Compreender os modelos, técnicas e metodologias de desenvolvimento de algoritmos paralelos. Aprender a analisar e escrever programas paralelos. Obter experiência prática no desenvolvimento de programas para sistemas de memória partilhada e memória distribuída. Visão geral de algoritmos paralelos em diferentes áreas de aplicação.
Programa
Arquiteturas para computação paralela. Taxonomia de Flynn. Modelos de programação: multicores e multicomputadores; organização da memória; overheads. Análise e síntese de algoritmos paralelos: particionamento de problemas; organização dos dados; comunicação e sincronização; balanceamento de carga; agendamento. Métricas de desempenho. Programação de sistemas de memória partilhada: OpenMP, threads, condições de corrida, deteção de deadlock. Programação de sistemas de memória distribuída: redes de interligação; passagem de mensagens, MPI. Programação híbrida. Computação heterogénea: GPU; FPGA. Áreas de aplicação: métodos numéricos: multiplicação de matrizes, sistemas de equações lineares; algoritmos em grafos; ordenação; algoritmos de procura e otimização; métodos de Monte Carlo; outros.
Metodologia de avaliação
Exame 40%, Projecto 60%. Nota mínima de 7,5 em cada componente.
Pré-requisitos
Conhecimentos sólidos de programação, idealmente nas linguagens C ou C++. Boas bases em análise de algoritmos.
Componente Laboratorial
O projeto proposto deverá ser implementado em várias versões: - versão série, que servirá como referência - memória partilhada - memória distribuída - versão híbrida
Princípios Éticos
Todos os membros de um grupo são responsáveis pelo trabalho do grupo. Em qualquer avaliação, todo aluno deve divulgar honestamente qualquer ajuda recebida e fontes usadas. Numa avaliação oral, todo aluno deverá ser capaz de apresentar e responder a perguntas sobre toda a avaliação.
Componente de Programação e Computação
No curso onde esta UC é oferecida estão asseguradas as componentes de Computação e Programação de acordo com o MEPP 2122.
Componente de Competências Transversais
O projeto desenvolve: - Pensamento Crítico e Inovador; - Competências Interpessoais, por ser um trabalho em grupo.
Bibliografia
Principal
Barry Wilkinson and Michael Allen
Designing and Building Parallel Programs : Concepts and Tools for Parallel Software Engineering