Hybrid Programming in HPC – MPI+X
Course Description
Most HPC systems consist of clusters of shared-memory nodes. Efficient use of such systems requires optimizing both memory consumption and communication time. Hybrid programming combines distributed-memory parallelization across nodes (e.g., using MPI) with shared-memory parallelization within each node (e.g., using OpenMP or MPI-3.0 shared memory).
This course examines the strengths and weaknesses of various parallel programming models on clusters of shared-memory nodes, with special focus on multi-socket, multi-core systems in highly parallel environments. MPI-3.0 introduces a shared memory programming interface that complements inter-node MPI communication. This interface supports direct neighbor accesses, similar to OpenMP, and enables direct halo copies, paving the way for innovative hybrid programming models. These models are compared against hybrid MPI+OpenMP approaches and pure MPI implementations. Additionally, the course covers MPI+OpenMP offloading with GPUs.
Through numerous case studies and micro-benchmarks, the course highlights performance aspects of hybrid programming. Hands-on sessions are included daily. Tools for hybrid programming – such as thread and process placement support and performance analysis – are demonstrated in practical “how-to” sections.
This course is a joint training event of EuroCC@GCS and EuroCC-Austria, the German and Austrian National Competence Centres for High-Performance Computing. It is organized by the HLRS in cooperation with the VSC Research Center at TU Wien and NHR@FAU.
Upcoming Iterations and Additional Courses
You can find dates and registration links for this and other upcoming NHR@FAU courses at https://hpc.fau.de/teaching/tutorials-and-courses/.