PA
Parallel Algorithms
Objectives
This curricular unit aims to develop skills in the analysis and design of algorithms with a high degree of parallelism, namely:
- Characterize the basic parallelism patterns.
- Analyze the complexity of parallel algorithms in various types of computing systems.
- Design efficient parallel algorithms for scientific computing suitable for each architecture.
- Identify the underlying parallel algorithms in scientific applications.
Program
- Complexity analysis of parallel algorithms
- Basic parallelism patterns (map, reduce and scan) and their efficient implementation on various high-performance platforms (Clusters, GPUs)
- Typical parallelism patterns: pipeline, farm, hearbeat and divide&conquer.
- Analysis of existing parallel algorithms: sorting, operations on dense and sparse matrices, iterative solutions of systems of linear equations, N-body and graph algorithms (MST).
- Generation of pseudo-random numbers and memory allocation.
- Lock-free parallel algorithms.
Bibliography
- Parallel Scientific Computation: A Structured Approach Using BSP, Rob H. Bisseling, Oxford University Press, 2020.
- Structured Parallel Programming, Michael McCool, Arch Robison & James Reinders, 2012
- Parallel Computing Architectures and APIs, Vivek Kale, Chapman and Hall/CRC, 2019
- Programming Massively Parallel Processors, A Hands-on Approach, 3rd Ed., David Kirk & Wen-mei Hwu, Morgan Kaufmann, 2016