We are pleased to announce a four-day course in Parallel Programming with MPI/OpenMP being held from August 19 - 22, 2019. 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.


The aim of this course is to give people with some programming experience an introduction into the parallel programming models MPI and OpenMP. It starts on beginners level but also includes advanced features of the current standards. Hands-on sessions (in C and Fortran) will allow users to immediately test and understand the constructs of the Message Passing Interface (MPI) and the shared memory directives of OpenMP.

The first two days are an introduction to MPI and OpenMP, which includes a deep introduction to nonblocking MPI communication, and also touches newer OpenMP-4.0 features, such as the vectorization directives, thread affinity and OpenMP places.

The last two days are dedicated to advanced methods in MPI, e.g., the group and communicator concept, process topologies, derived data types, and one-sided communication. This course also includes latest features of MPI-3.0/3.1, e.g., the new MPI-3.0 shared memory programming model within MPI, the new Fortran language binding, nonblocking collectives, and neighborhood communication. Hybrid MPI+OpenMP programming is also addressed, as well as the parallelization of implicit and explicit solvers, which also includes a short tutorial about PETSc.

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

For further details, see the four-day course agenda (preliminary).


To benefit from this course you should:

  • have some basic programming knowledge in C/C++ or Fortran (or good knowledge of another C-like programming language in order to quickly adopt to a new syntax);

  • be able to use the Linux command line (shell) including common tools such as 'ssh', etc.

For the course, no private computer is needed. Participants will work in groups of two on a lab PC and use ETH's high-performance computing (HPC) infrastructure to carry out hands-on exercises. Instructions on how to use the HPC cluster will be provided during the course.

Participation and registration fees

This course is open to members of both academia and industry. The maximal number of participants is 50. The first 40 participants (80%) 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 four-day course; this is our recommendation and participants who choose full attendance are given highest priority;

  • the first two days (beginners/intermediate level); note, however, that modern parallel computers are all clusters of shared memory nodes and the last two days (days 3/4) address methods to efficiently use such hierarchical hardware; therefore, beginners/intermediate level participants are better served with full four-day attendance;

  • the last two days (intermediate/advanced level); participants who choose this option must be really familiar with the topics covered in the first two days (days 1/2), especially with nonblocking MPI methods to prevent serialization or deadlocks in neighbor communication.

The registration fees are as follows:

  • Swiss academia (i.e. ETH/EPFL and ETH domain research institutes, cantonal universities and universities of applied sciences): 420 CHF for the full four-day course; 280 CHF for two-day course attendance (either days 1/2 or 3/4);

  • academia (other than above): 480 CHF for the full four-day course; 320 CHF for two-day course attendance (either days 1/2 or 3/4);

  • industry: 1200 CHF for the full four-day course; 800 CHF for two-day course attendance (either days 1/2 or 3/4).

Note that we only accept credit card payments.

The course takes place at Room NO D39, Building NO, Sonneggstrasse 5, 8092 Zurich (near ETH Zurich's main building) and is conveniently accessible by public transportation and in walking distance from various cafeterias and other food options; see map.

If you are interested in this course, please register here.

In case of questions, contact Thomas Wüst.