Computação Paralela
1
2025-2026
02003476
Física
Português
Presencial
Semestral
6.0
Opcional
2º Ciclo - Mestrado
Conhecimentos de Base Recomendados
Experiência em programação numa linguagem de alto nível (Python ou C ou Fortran).
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 a linguagem Python e o módulo mpi4py (Windows/Linux/MacOS) para os exercícios práticos, que consistem em elaboração de programas paralelos. Disponibiliza-se a um computador indiviual na sala de aula, mas o trabalho também pode ser feito no laptop pessoal do aluno.
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
Resolução de problemas: 100.0%
Bibliografia
Documenta¸ c˜ao online do Python: http://www.python.org
Python 3 Tutorial: https://docs.python.org/3/tutorial/index.html
Anaconda: https://www.anaconda.com/download
Microsoft Windows 10/11 Subsystem for Linux: https://learn.microsoft.com/en-us/windows/wsl/install A Whirlwind Tour of Python Jake VanderPlas, O’Reilly, August 2016. https://www.oreilly.com/library/view/a-whirlwind-tour/9781492037859
Learning Scientific Programming with Python Christian Hill, Cambridge University Press (2016) https://doi.org/10.1017/CBO9781139871754
Stackoverflow: https://stackoverflow.com/questions/tagged/python.