ONLINE COURSE: Six-day course in parallel programming with MPI/OpenMP @ ETH

Research & Science
ONLINE COURSE: Six-day course in parallel programming with MPI/OpenMP @ ETH

Overview

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 17-18, 2022) 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 22-23, 2022) 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 (Wed+Thu, Aug 24-25, 2022) is dedicated to intermediate & advanced methods in MPI, e.g., the group and communicator concept, advanced derived data types and one-sided communication. This course 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 each of the 2-day blocks individually or all blocks together.

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

Program
Program

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

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

  • On Day 4, the MPI beginners may choose an additional exercise and will be supported until 17:00 if they wish.
  • On Day 5, there will be an additional slot from 16:00-16:30 for the Fortran users of MPI.
Prerequisites
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.

Please tar -xvzf TEST.tar.gz using https://fs.hlrs.de/projects/par/events/TEST.tar.gz  or unzip TEST.zip using https://fs.hlrs.de/projects/par/events/TEST.zip and verify your MPI and OpenMP installation with the tests described 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) would 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.

Registration & Further Information

See course web-page in Zürich: https://sis.id.ethz.ch/services/consultingtraining/mpi_openmp_course.html (expected to be available end of May 2022; before this date, it contains information about the 4-day-course last year. This year, we reduced the course hours per day and added additional exercises in the beginners part.)

Shortcut-URL & Course Number

http://www.hlrs.de/training/2022/ETH