Parallel Computing

Year
1
Academic year
2025-2026
Code
02003476
Subject Area
Computation
Language of Instruction
Portuguese
Mode of Delivery
Face-to-face
Duration
SEMESTRIAL
ECTS Credits
6.0
Type
Compulsory
Level
2nd Cycle Studies - Mestrado

Recommended Prerequisites

Porgramming experience with a high level language (Python or C or Fortran).

Teaching Methods

Classes are essentially hands-on practice sessions of parallel computing.

Teaching involves slide presentations of theoretical material, programming examples, and programming exercises . Internet access is used for obtaining relevant material.

The programming exercises are made using Python and the mpi4py module, either on classroom PCs or personal laptop, at the choice of the student.

Learning Outcomes

Objectives:
Know the architecture of parallel machines;
Know how to distribute, in selected problems, a computational task to several (as much as possible) independent processes;
Understand when to use the different parallel programing paradigms.

Competences:
Develop analysis and synthesis abilities;
Problem solving;
Usage of internet as communication means and source of information;
Decision-making capability;
Critical reasoning;
Capacity for autonomous learning;
Adaptability to new situations;
Research ability

Work Placement(s)

No

Syllabus

Basic notions: parallel computing and its importance. Main application domains. Paradigms of parallel computing: shared and distributed memory. What is a supercomputer: main types of hardware architectures, components and middleware. Trends in supercomputing.

Parallelization in software: OpenMP, MPI . Measuring the efficiency of parallel algorithms: speedup and Amdhal's law.

OpenMP programming: fork and join model. Parallel zone. Parallel loops, collective operations and barriers. Private and shared variables. Data race problems.

MPI. Parallelization techniques: data decomposition and domain decomposition. Model master-slave for data distribution and collection. MPI communication types. Collective operations for data and computation. Communicators and communication topologies. Creation of derived data types.

Applications to linear algebra problems and to the numerical solution of the Poisson equation.

Head Lecturer(s)

Helmut Wolters

Assessment Methods

Assessment
Resolution Problems: 100.0%

Bibliography

  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.