Disciplina

Área

Área Científica de Metodologia e Tecnologia da Programação > Algoritmia

Activa nos planos curriculares

MEEC 2021 > Meec 2021 > 2º Ciclo > Área Principal > Áreas de Especialização > Especialização Principal - Sistemas de Computação > Arquiteturas e Computação > Computação Paralela e Distribuída

MEIC-T 2021 > Meic-T 2021 > 2º Ciclo > 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.

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