This lecture introduces basic architectural concepts of parallel computersused in numerical simulation and derivesprogramming and parallelization approaches to efficiently use modern high performance computing systems. As a basic concept analytical or white-box performance modelling is used to describe the interaction between user code and hardware. Appropriate code optimization and parallelization techniques are motivated by this analysis. Major topics covered in the lecture include
-
Single core architecture and optimisation strategies
-
Memory hierarchy and data access optimization
-
Concepts of parallel computers and parallel computing
-
Efficient shared memory parallelisation (OpenMP)
-
Parallelisation approaches for multi-core processors including GPUs
-
Efficient distributed memory parallelisation (MPI)
-
Roofline performance model
-
Serial and parallel performance modelling