Parallel Programming
Sustainable Development Goals
Learning Goals
- learns the techniques used to solve problems specific to parallel algorithms;
- becomes acquainted with some parallel algorithms;
- learns how to analyse the behaviour of parallel algorithms;
- is able to develop and program parallel algorithms.
Contents
Parallelism and concurrency
Systems for parallel computing
- multicore, multiprocessor, cluster, heterogeneous
- shared memory and distributed memory
- caches, consistency and coherency
- communication and synchronisation
Support for parallel programming
- atomic accesses
- lock, semaphore, monitor
- critical section, race
- messages passing
Performance of parallel programs
Programming models
- Posix threads
- OpenMP
- MPI
The design of parallel algorithms
- task parallelism
- data parallelism
- patterns for parallelism
- distributed algorithms
Parallel data structures
Teaching Methods
Assessment
Students' work assessment comprises:
- a laboratory component consisting of two assignments on programming and using parallel algorithms (continuous and final assessment modes, each assignment has a 50% weight, and a minimum grade of 7.0 is required for each assignment), and
- a written component consisting of either a written test (continuous assessment mode, minimum grade of 7.0 required) or a written exam (final assessment mode, minimum grade of 7.0 required).
The final grade is the average of the grades for the laboratory and the written components.
Teaching Staff
- Vasco Fernando de Figueiredo Tavares Pedro [responsible]