We are pleased to announce a six-day online course in Parallel Programming with MPI/OpenMP to be held from August 21 - 30, 2024 (exact schedule, see below). The course will be given by Dr. Rolf Rabenseifner from HLRS.

Dr. Rabenseifner is a world-renowned expert in parallel computing and teacher of courses in the areas of parallel programming with the Message Passing Interface (MPI), shared memory parallelization with OpenMP, and the Partitioned Global Address Space (PGAS) languages UPC and Co-Array Fortran.

Description

This course will be provided as ONLINE course (using Zoom) in three 2-day-blocks.

The goal of this course is to give people with some programming experience an introduction to the MPI and OpenMP parallel programming models. It starts at beginner level, but also covers advanced features of the current standards. Hands-on exercises (in C, Fortran, and Python) will allow participants to immediately test and understand the Message Passing Interface (MPI) constructs and OpenMP's shared memory directives.

The first block (Wed+Thu, Aug 21-22, 2024) will be an introduction to OpenMP, covering also newer OpenMP 4.0/4.5/5.0 features such as the vectorization directives, thread affinity, and OpenMP places. (Fri-Sun are not course days).

The second block (Mon+Tue, Aug 26-27, 2024) is an introduction to MPI, which includes a comprehensive introduction to nonblocking MPI communication, but also covers some intermediate topics such as derived data types and virtual process topologies.

The third block (Thu+Fri, Aug 29-30, 2024) is dedicated to intermediate & advanced methods in MPI, e.g., the group and communicator concept, advanced derived data types and one-sided communication. This block also includes latest features of MPI-3.0/3.1/4.0, e.g., the shared memory programming model within MPI, the new Fortran language binding, nonblocking collectives, neighborhood communication, and long counts.

You can choose any of the three 2-day blocks individually or combined.

Content level: 40% for beginners, 30% intermediate, 30% advanced.

Program

For details, see the six-day course agenda / content (preliminary).

The course hours are usually between 9:00-16:30, with Zoom login starting at 8:45, and two exceptions:

  • On Days 3+4 (Mon+Tue, Aug 26+27), there is an additional homework of 20-30 Minutes which will be supported until 17:00 if participants wish.

  • On the last day (Day 6, Fri, Aug 30), the course ends at 16:00.

Prerequisites

Linux command shell commands and some basic programming knowledge in C or Fortran (or Python for the MPI part).

To be able to do the hands-on exercises of this course, you need a computer with an OpenMP capable C/C++ or Fortran compiler and a corresponding, up-to-date MPI library (in case of Fortran, the mpi_f08 module is required).

If you have access, you can also use a high performance compute (HPC) cluster for the exercises (such as e.g. Euler, for members of ETH Zurich; Euler has these software requirements readily available). Please note that the course organizers will not grant you access to an HPC system nor any other compute environment. Therefore, please make sure to have a functioning working environment / access to an HPC cluster prior to the course.

To check if your MPI and OpenMP installation is valid, please either

  • download TEST.tar.gz from this link and run tar -xvzf TEST.tar.gz or
  • download TEST.zip from this link and run unzip TEST.zip.

After that follow the instructions in TEST/README.txt within the archive.

In addition, you can perform most MPI exercises in Python with mpi4py + numpy. In this case, an appropriate installation on your system is required (together with a C/C++ or Fortran installation for the other exercises).

The optional exercise about race-condition detection (in the morning of the 2nd day) requires an installation of a race-condition detection tool, e.g., the Intel Inspector together with the Intel compiler. It is recommended to install it.

Please make sure to have a functioning working environment / access to an HPC cluster prior to the start of the course. In case of questions, please contact the course organizer (see below).

Participation and registration fees

This course is open to members of both academia and industry. The maximal number of participants is 40. The first 30 participants are selected according to a strict "first-come-first-serve" rule. Surplus participants will come on a waiting list and are selected according to priorities of the course organizer (Scientific IT Services).

It is possible to register for

  • the full six-day course; this is our recommendation and participants who choose full attendance are given highest priority;

or for any of the three 2-day-blocks individually or combined, i.e.

  • the first block (Wed+Thu, Aug 21-22, 2024): OpenMP;

  • the second block (Mon+Tue, Aug 26-27, 2024): Introduction to MPI; note, however, that modern parallel computers are all clusters of shared memory nodes and the third block addresses methods to efficiently use such hierarchical hardware; therefore, beginners/intermediate level participants are better served with combining the second and third blocks;

  • the third block (Thu+Fri, Aug 29-30, 2024): Intermediate & advanced methods in MPI; participants who choose this block only must be really familiar with the topics covered in the second block, especially with nonblocking MPI methods to prevent serialization or deadlocks in neighbor communication.

The registration fees are as follows:

  • academia: 150 CHF for any of the three 2-day-blocks (i.e. 450 CHF for full six-day course attendance);

  • industry: 400 CHF for any of the three 2-day-blocks (i.e. 1200 CHF for full six-day course attendance).

Please note that we only accept credit card payments.

You can register to this course here.

In case of questions, contact Thomas Wüst.