Computação Avançada

Ano
1
Ano lectivo
2021-2022
Código
03005769
Área Científica
Física
Língua de Ensino
Português
Outras Línguas de Ensino
Inglês
Modo de Ensino
Presencial
Duração
Semestral
Créditos ECTS
6.0
Tipo
Opcional
Nível
3º Ciclo - Doutoramento

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

- Reconhecer a importância e os domínios de aplicação da computação avançada
- Conhecer as principais características de hardware e software de um supercomputador
- Adquirir conhecimentos e prática de computação paralela, incluindo o uso de diretivas/bibliotecas paralelas e alguns algoritmos específicos para esse tipo de computação.
- Adquirir experiência no uso de recursos de computação avançada.

Competências a desenvolver:

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

Sistemas de computação avançada: HPC vs. HTC.

Arquiteturas de hardware: clusters, MPP, arquiteturas híbridas.

Software de sistema usado em HPC: filesystems, bibliotecas, gestão de recursos e de trabalhos. Tendências da evolução do HPC.

Computação paralela e sua importância. Principais domínios de aplicação. Paradigmas de computação paralela: memória distribuída e partilhada. Eficiência de um algoritmo paralelo: speedup e eficiência de paralelização (Lei de Amdhal).

OpenMP. Modelo "fork and join". Loops paralelos, operações coletivas e barreiras. Variáveis privadas e partilhadas. Problema da competição por dados partilhados ("data race").

MPI. 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

Using MPI, 2nd Edition
William Gropp, Ewing Lusk and Anthony Skjellum, MIT Press
Using MPI-2
William Gropp, Ewing Lusk and Rajeev Thakur, MIT Press
Using OpenMP
Barbara Chapman, Gabriele Jost and Ruud van der Pas, MIT Press
Parallel Programming with MPI, P. Pacheco, Morgan Kaufmann Publishers, 1997.
Numerical Linear Algebra on High-Performance Computers
Jack J. Dongarra, Iain S. Duff , Danny C. Sorensen, Hank A. van der Vorst
The Sourcebook of Parallel Computing
Jack Dongarra , Geoffrey Fox , Ken Kennedy , Linda Torczon , William Gropp , Ian Foster (Editor), Andy White
(Editor)
http://www.openmp.org
https://computing.llnl.gov/tutorials/mpi