Computação Paralela
1
2023-2024
02003476
Computação e Simulação
Português
Inglês
Presencial
Semestral
6.0
Opcional
2º Ciclo - Mestrado
Conhecimentos de Base Recomendados
Experiência em programação numa linguagem de alto nível (Fortran ou C).
Métodos de Ensino
Ensino eminentemente prático, com recurso extensivo a apresentações de slides com matéria teórica e prática, acesso à internet.
Faz-se uso de um terminal de linha de comando usando compiladores da GNU e a implementação mpich do MPI (Windows/Linux/MacOS) para os exercícios práticos, que consistem em elaboração de programas paralelos. Disponibiliza-se acesso remoto a um cluster de computadores para as avaliações práticas.
Resultados de Aprendizagem
Objetivos:
Conhecer a arquitetura de máquinas paralelas; saber distribuir, em problemas selecionados, uma tarefa computacional por um conjunto de processos independentes; saber utilizar os paradigmas da programação paralela.
Competências:
Competência em análise e síntese;
Competência em resolução de problemas;
Uso da internet como meio de comunicação e fonte de informação;
Capacidade de decisão;
Competência em raciocínio crítico;
Competência em aprendizagem autónoma;
Adaptabilidade a novas situações.
Competência em investigar.
Estágio(s)
NãoPrograma
Noções Básicas: Computação paralela e sua importância. Principais domínios de aplicação. Paradigmas de computação paralela: memória distribuída e partilhada. Algumas noções de supercomputador, principais arquiteturas e middleware associado. Tendências da sua evolução em hardware e software.
Paralelismo ao nível de software: OpenMP, MPI. A medição da eficiência de um algoritmo paralelo: speedup e eficiência de paralelização (Lei de Amdhal).
Programação em OpenMP: Modelo "fork and join". Loops paralelos, operações coletivas e barreiras. Variáveis privadas e partilhadas. Problemas de competição por dados partilhados ("data race").
MPI. Técnicas de Paralelização de Algoritmos: decomposição de dados e decomposição de domínio. Modelo master-slave para distribuição de dados. Tipos de comunicações em MPI. Operações coletivas - dados e cálculo. Comunicadores e topologias de comunicação. Definição de novas estruturas de dados.
Aplicações a álgebra linear e resolução da equação de Poisson.
Docente(s) responsável(eis)
Helmut Wolters
Métodos de Avaliação
Avaliação
Projecto: 50.0%
Resolução de problemas: 50.0%
Bibliografia
B. Chapman, G. Jost, R. van der Pas, Using OpenMP: Portable Shared Memory Parallel Programming, MIT Press, 2007.
W. Gropp, E. Lusk, A. Skjellum, Using MPI Portable Parallel Programming with the Message Passing Interface, segunda edição, MIT Press, 1999.
P. Pacheco, Parallel Programming with MPI, Morgan Kaufmann Publishers, 1997.
http://www.openmp.org
https://computing.llnl.gov/tutorials/mpi