Disciplina

Á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

Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers

Barry Wilkinson and Michael Allen

2005

Prentice Hall


Parallel Programming

Michael Quinn

2003

McGrawHill


Designing and Building Parallel Programs : Concepts and Tools for Parallel Software Engineering

Ian Foster

1995

Addison Wesley