Designação | Código | Curso | Regime | Regente |
---|
Programação Paralela | 14966 [J905N5] | Licenciatura em Engenharia Física [ENGFIS] | S1 | João Luís Ferreira Sobral |
Objetivos | Os conteúdos programáticos abordam os aspetos mais relevantes da computação paralela, incluindo os modelos, metodologias e técnicas de otimização de desempenho mais relevantes. Deste modo, os conteúdos programáticos permitem aos estudantes obterem as competências pretendidas. |
Programa | 1. Análise da arquitetura de processadores genéricos, ao nível do ILP e de outras formas de paralelismo (em ambiente de memória partilhada/distribuída) e na hierarquia de memória. 2. Análise e avaliação de sistemas de computação paralelos de memória partilhada e sistemas de memória distribuída. 3. Metodologia e modelos de programação paralela: fases: partição, comunicação, aglomeração e mapeamento; programação em ambiente multi-threaded, ferramentas (inc. OpenMP) e linguagens; a comunicação de mensagens em ambiente de memória distribuída (inc. MPI). 4. Projeto de aplicações paralelas, foco na computação científica, contendo: algoritmos paralelos típicos (pipelining, farming, heartbeat e divide & conquer). 5. Medição e otimização de desempenho de aplicações paralelas: impacto da granularidade na computação/comunicação; estratégias de distribuição de cargas computacionais e de dados. |
Bibliografia | Patterson, D. John Hennessy, J. (2013). Computer Organization and Design: The Hardware/Software Interface, 5th Ed., Morgan Kaufmann McCool, M., Robison, A. D., Reinders, J. (2012). Structured Parallel Programming Patterns for Efficient Computation, Morgan Kaufmann Quinn, M. J. (2003). Parallel Programming in C with MPI and OpenMP, McGraw-Hill Education Foster, F. (1995). Designing and Programming Parallel Programs: Concepts and Tools for Parallel Software Engineering, Ian Addison-Wesley |
Resultados da aprendizagem | Esta UC tem como objetivo desenvolver competências em computação paralela, nomeadamente: - Caracterizar e avaliar qualitativa/quantitativamente sistemas computacionais e respetivas unidades de computação - Identificar e caracterizar os principais paradigmas de programação paralela existentes, nomeadamente a programação com memória partilhada e a programação em memória distribuída com comunicação de mensagens - Desenvolver e melhorar a eficiência da execução de aplicações em arquiteturas paralelas, com ênfase na computação científica |
Método de avaliação | A avaliação é realizada através de um teste escrito (peso de 30% a 40%) e de um trabalho prático (peso 60% a 70%). |
Funcionamento | Turno: T 1; Docente: João Luís Ferreira Sobral; Dep.: DI; Horas: 30. Turno: PL 1; Docente: André Martins Pereira; Dep.: DI; Horas: 30. Turno: PL 2; Docente: André Martins Pereira; Dep.: DI; Horas: 30. |