Computação Paralela

Ano
0
Ano lectivo
2022-2023
Código
02003476
Área Científica
Métodos Numéricos
Língua de Ensino
Português
Outras Línguas de Ensino
Inglês
Modo de Ensino
Presencial
Créditos ECTS
6.0
Tipo
Opcional
Nível
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ão

Programa

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
Resolução de problemas: 50.0%
Projecto: 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