Leveraging parallel architectures requires having parallel algorithms. Basic ideas in parallel algorithms will be covered for the most popular numerical linear algebra tasks. The potential of different parallelisation techniques will be explored.
This part of the course aims to provide participants with the necessary skills to leverage massively parallel computer architectures. Starting from selected parallel algorithms, teaching will focus on different programming models for creating parallel software. This includes hybrid-parallelisation approaches using MPI and OpenMP as well as programming models for highly parallel GPUs.
Modern HPC architectures
Computational and data scientists can benefit significantly from having a basic understanding of modern computer architectures and their capabilities as a basis for efficient exploitation of HPC systems. The lectures will provide an overview of relevant processing devices, memory hierarchies as well as network technologies and architectures.
Performance analysis and engineering
Tools can support scientists to explore the performance behaviour of HPC systems while executing their applications. This part of the course aims to provide knowledge and training on analysing performance. This will be followed by lectures and lab exercises that focus on techniques for systematic improvement of performance.
With the complexity of scientific software growing, software engineering skills have become a key asset for computational and data scientists. Several lectures will be devoted to relevant software engineering techniques as well as strategies for the modern design of scientific software.