• Partnership for Advanced Computing in Europe (PRACE)

MPI: A Short Introduction to One-sided Communication

Learn the details of one-sided communication in MPI programming.

1,361 enrolled on this course

This image shows a detail of the new supercomputer at HLRS
  • Duration

    2 weeks
  • Weekly study

    4 hours

Discover the advantages to one-sided communication in parallel programming

Message Passing Interface (MPI) is a key standard for parallel computing architectures. On this course, you’ll learn the essential concepts of one-sided communication in MPI, as well as the advantages of the MPI communication model.

You’ll learn the details of how exactly MPI works, as well how to use Remote Memory Access (RMA) routines. Examples, exercises, and tests will be used to help you learn and explore.

Skip to 0 minutes and 6 seconds Hello, I am Lucienne Dettki, one of your educators of the One-sided Communication MOOC. I suppose that you are familiar with MPI and that you also remember Two-sided Communication?

Skip to 0 minutes and 17 seconds I’ll recap: Behind me, you can see two processes and both are busy. Now the process on the left wants to receive some data from the other process. But it has to wait till the remote process stops working and starts to send the data. Finally it can receive the data from the sending process. This was Two-sided Communication. One-sided is a new communication concept. Again we have two processes and both are busy. Now you can see, that the process on the right has made visible a part of its data. And again, the process on the left wants to receive some data from the other process. But this time, it can manage getting the data without the remote process being involved.

Skip to 0 minutes and 59 seconds It can get the data needed and it can also put data to the remote process, while the remote process continues its work. Do you want to learn more about this new communication concept? Then join our MOOC on One-Sided Communication. We are looking forward to seeing you there.

Skip to 1 minute and 16 seconds Hello everyone, my name is Zheng Meyer-Zhao, one of the educators of the MPI one-sided communication MOOC. I work at ASTRON, the Netherlands Institute for Radio Astronomy. This MPI one-sided communication MOOC was developed jointly by ASTRON, HLRS, IUCC and SURFsara based on an MPI course given by HLRS. During the course, there are exercises with code snippets to get you familiar with the one-sided communication concept, and there are quizzes you can answer in order to recap the learning material and to check whether you’ve understood the topics.


  • Week 1

    Overview and the principles of One-Sided MPI Communication

    • Introduction

      Welcome and introduction to the course material and instructors and the chance to introduce yourself.

    • Introduction to one-sided communication

      In this section we explain, why one-sided communication is used. The goal is to access the memory of other processes to either store (PUT) or retrieve (GET) data. We will also discuss the pros and cons of one-sided communication.

    • The three categories of one-sided routines

      - How to define/allocate the memory other processes can access? - Which routines to use for accessing the exposed memory? - Do we need memory "guards" to protect it from data corruption? You will find the answers in this activity!

    • Functional opportunities, summary and quiz

      You may be asking if one-sided communication is really needed? Why not always use send and receive routines? But sometimes one-sided communication has advantages over two-sided. We will look at an example now.

  • Week 2

    Details and examples of One-Sided MPI communication

    • Windows and their remote access

      Now it's time to take a deep-dive into the definitions of the window creation/allocation routines, and their remote access routines.

    • Synchronization routines

      We will cover different synchronization routines and also discuss the Fortran problems with one-sided communication.

    • Exercise, Summary and Quiz

      We have completed our sessions on one-sided communication. Now it is time for some fun exercises and a quiz.

Learning on this course

On every step of the course you can meet other learners, share your ideas and join in with active discussions in the comments.

What will you achieve?

By the end of the course, you‘ll be able to...

  • Apply MPI one-sided communication to your communication patterns in your MPI applications
  • Explain the main advantages and disadvantages of MPI one-sided communication
  • Design your program using methods of MPI communication that prevent deadlocks and ensure the correctness of the program
  • Improve scalability of your program by substituting non-scalable solutions with scalable one-sided approaches

Who is the course for?

The course is aimed at anyone familiar with MPI who wants to learn to program using one-sided communication.

What software or tools do you need?

To take part in this course you don’t need a supercomputer – just an MPI environment on your laptop or computer.

For users of screen readers, the text of the course contains all necessary information, and images are additional illustrations. Unfortunately the quizzes in this course cannot be made screen-reader accessible, however learners can achieve all learning outcomes and understand all the content without completing these.

Who will you learn with?

I'm head of Parallel Computing – Training and Application Services at HLRS and member of the MPI forum. In workshops & summer schools I teach parallel programming models in many universities and labs.

I work at HLRS Parallel Computing - Training and Application Services. I develop the conceptual design and contents for our courses together with my colleagues and I organize PRACE and HLRS trainings.

I work as a software engineer for HPC applications at ASTRON in The Netherlands. I spend most of my time developing software, giving trainings on HPC related topics, and developing training materials.

I work as supercomputing advisor and coordinator of trainings at SURF in the Netherlands. I give support to researchers in their daily work and contribute to provide training on different HPC topics.

Who developed the course?

Partnership for Advanced Computing in Europe (PRACE)

The Partnership for Advanced Computing in Europe (PRACE) is an international non-profit association with its seat in Brussels.

Learning on FutureLearn

Your learning, your rules

  • Courses are split into weeks, activities, and steps to help you keep track of your learning
  • Learn through a mix of bite-sized videos, long- and short-form articles, audio, and practical activities
  • Stay motivated by using the Progress page to keep track of your step completion and assessment scores

Join a global classroom

  • Experience the power of social learning, and get inspired by an international network of learners
  • Share ideas with your peers and course educators on every step of the course
  • Join the conversation by reading, @ing, liking, bookmarking, and replying to comments from others

Map your progress

  • As you work through the course, use notifications and the Progress page to guide your learning
  • Whenever you’re ready, mark each step as complete, you’re in control
  • Complete 90% of course steps and all of the assessments to earn your certificate

Want to know more about learning on FutureLearn? Using FutureLearn

Learner reviews

Learner reviews cannot be loaded due to your cookie settings. Please and refresh the page to view this content.

Do you know someone who'd love this course? Tell them about it...

You can use the hashtag #MPIonesided to talk about this course on social media.