Instructor’s guide
This training material covers intermediate-level aspects of MPI programming.
Learning outcomes
Communicators, groups, derived datatypes
One-sided communication
Collective communication, blocking and non-blocking
MPI and threads
Tips
Append
?plain=1
to collapse the sidebar while presenting. Suggestion from Richard Darst.
Timing
Second iteration: 2022-06-14/17
Second iteration of this workshop was given as 4 x (almost) 4 hours, that is 4 half days. We ran the workshop in collaboration with Xin Li (PDC) and Pedro Ojeda May (HPC2N).
Day 1 - Tuesday 14 June 2022 – Communicators, groups, derived datatypes
9:00 - 9:10
Welcome and introduction to the training course
9:10 - 9:50
Communicators and groups
9:50 - 10:00
Break
10:00 - 10:40
Derived datatypes: pack-unpack
10:40 - 10:50
Break
10:50 - 11:30
Derived datatypes: ``MPI_Datatype``
11:30 - 11:40
Break
11:40 - 12:20
Simple collective communication
12:20 - 12:30
Wrap-up
Day 2 - Wednesday 15 June 2022 - Collective communication (including nonblocking)
9:00 - 9:10
What did we cover yesterday?
9:10 - 09:55
Scatter and gather
9:55 - 10:05
Break
10:05 - 10:50
Generalized forms of gather
10:50 - 11:00
Break
11:00 - 12:10
Non-blocking point-to-point
12:10 - 12:20
Wrap-up
Day 3 - Thursday 16 June 2022 – Non-blocking and one-sided communication
9:00 - 9:10
What did we cover yesterday?
9:10 - 9:50
Non-blocking collective communication
9:50 - 10:00
Break
10:00 - 10:40
One-sided communication: concepts
10:40 - 10:50
Break
10:50 - 11:40
One-sided communication: functions
11:40 - 12:00
Wrap-up
Day 4 - Friday 17 June 2022 - MPI and threads
9:00 - 9:10
What did we cover yesterday?
9:10 - 10:00
One-sided communication: synchronization
10:00 - 10:10
Break
10:10 - 11:20
Introducing MPI and threads
11:20 - 11:30
Break
11:30 - 12:10
MPI and threads in practice
12:10 - 12:20
Wrap-up
First iteration: 2020-12-08/11
First iteration of this workshop was given as 4 x (almost) 4 hours, that is 4 half days.
We had two main 30-minutes lectures each day. Each lecture included type-alongs and was followed by ample time for questions and live-coding demos. Each day was concluded with exercises and a wrap-up.
Day 1 - Tuesday 8 December 2020 – Communicators, groups, derived datatypes
9:00 - 9:10
Welcome and introduction to the training course
9:10 - 10:30
Using communicators in applications and libraries
10:30 - 10:45
Break
10:45 - 11:25
Handling derived datatypes
11:25 - 12:20
Exercises
12:20 - 12:30
Wrap-up
Day 2 - Wednesday 9 December 2020 - Collective communication (including nonblocking)
9:00 - 9:10
What did we cover yesterday?
9:10 - 09:45
Simple collective communication
9:45 - 09:50
Break
9:50 - 10:25
Scatter and gather
10:30 - 10:35
Break
10:35 - 11:10 : Generalized forms of gather
11:10 - 11:20
Break
11:20 - 11:40
Non-blocking point-to-point communication
11:40 - 11:45
Break
11:45 - 12:20
Non-blocking collective communication
12:20 - 12:30
Wrap-up
Day 3 - Thursday 10 December 2020 – One-sided communication
9:00 - 9:10
What did we cover yesterday?
9:10 - 10:30
The whys and hows of remote memory access in MPI
10:30 - 10:45
Break
10:45 - 11:25
RMA and synchronization
11:25 - 12:20
Exercises
12:20 - 12:30
Wrap-up
Day 4 - Friday 11 December 2020 - MPI and threads
9:00 - 9:10
What did we cover yesterday?
9:10 - 9:40
Why use MPI threading?
9:40 - 9:50
Break
9:50 - 10:50
How does MPI support threading?
10:50 - 11:00
Break
11:00 - 11:30
Using fork-join parallelism with MPI
11:30 - 11:40
Break
11:40 - 12:10
Using tasking with MPI
12:10 - 12:20
Tips for hybrid MPI+OpenMP
12:20 - 12:30
Wrap-up