• Partnership for Advanced Computing in Europe (PRACE)

One-Sided Communication and the MPI Shared Memory Interface

Learn how to make the most of the new shared memory interface within the MPI application.

366 enrolled on this course

Supercomputer at HLRS
  • Duration

    4 weeks
  • Weekly study

    4 hours

Get to grips with the new interface of MPI-3 and its practical use

Message Passing Interface (MPI) 3.0 has two new features that enable you to share memory windows.

On this four-week course from Partnership for Advanced Computing in Europe (PRACE), you’ll learn how to use these new methods to maximise your use of the application.

Refresh your knowledge of MPI one-sided communication

One-sided communication, compared to two-sided communication, can help to improve performance by reducing synchronisation, having no delay in sending data, and increasing functionality and scalability.

You’ll begin by getting an introduction to MPI one-sided communication to refresh your knowledge and skills. You’ll learn how to use the new interface, examining case-use studies in the real world to further cement your learning.

Discover the principles of MPI shared memory and how to use it

You’ll explore how to split a communicator in shared memory islands and how to synchronise load and store operations. By the end of the course, you’ll understand restrictions and advanced options when using MPI-3 shared memory.

Learn from the experts at PRACE

The mission of PRACE is to enable high-impact scientific discovery and engineering research and development across all disciplines. By offering world-class computing and data management resources and services, they aim to enhance European competitiveness for the benefit of society.

Download video: standard or HD

Skip to 0 minutes and 8 seconds Hello, nice to have you drop in. I’m Lucienne Dettki, one of the educators of this MOOC on MPI One-sided communication and Shared Memory Interface. I hope you are quite familiar with MPI and know two-sided-communication models. In our MOOC, we will first explain the concept of one-sided communication. Building on this, you will then learn everything you need to know about the MPI interface for shared memory. This MOOC was developed jointly by ASTRON, HLRS, IUCC, and SURF, and is based on an MPI course at HLRS. During this course, all concepts are explained in detail. In addition, there are many exercises with code snippets that illustrate the possibilities of programming and also help to overcome stumbling blocks.

Skip to 1 minute and 1 second There are several quizzes to review the learning material and see if you have understood everything. In the quizzes you will be asked details about MPI communication in the form of multiple choice questions. If you answer incorrectly, you will receive hints. In addition, there is always the possibility to discuss details among each other and with us educators. Now we hope to welcome you soon in our MOOC!

Syllabus

  • 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.

  • Week 3

    MPI Shared Memory – principles and how to use

    • Introduction to MPI shared memory programming

      In this activity, you will learn the principles of MPI shared memory programming.

    • Programming opportunities with MPI shared memory

      Where are typical usage areas for MPI shared memory programming?

    • Contiguous shared memory programming – how to

      In this section, you will learn how to allocate a shared memory window, and how to store data to it and how to access it using such data, of course by different processes and with some synchronization in between.

    • Alternative: NUMA domains and non-contiguous shared memory

      Often, the shared memory islands are ccNUMA nodes. Their memory consist of several independent NUMA domains, often with faster memory access within such NUMA domain compared to across NUMA domains. How can you address this issue?

    • Restrictions for MPI shared memory

      MPI libraries may define some restrictions, for example the maximum of allowed communicator or file handles. Of course, such restriction may also exist for the use of MPI shared memory.

    • Exercise & Discussion

      Based on the exercise in the second week, you will substitute the MPI_Put by a direct assignment to the shared memory window of a neighbor process.

    • Quiz & Summary of week 3

      In this activity we recap what you have learned in week 3. A quiz and a summary will wrap up this week.

  • Week 4

    MPI-3 Memory models and fast synchronization Options

    • Memory Models

      In this activity, you learn about the MPI memory models and one of the major problems of library based shared memory programming: the need of pairs of “local memory fences”.

    • Shared memory synchronization rules

      In this activity, you will learn about several methods to synchronize accesses on a shared memory window and special guarantees.

    • Further rules / Benchmarks / Summary / Discussion / Quiz

      Let's wrap up!

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 and MPI shared memory
  • Design your program using methods of MPI communication that prevent deadlocks and ensure a correct program
  • Improve scalability by substituting non-scalable solutions with scalable one-sided approaches

Who is the course for?

This course is designed for anyone familiar with MPI that wants to learn to program using the new interface.

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.

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

Get a taste of this course

Find out what this course is like by previewing some of the course steps before you join:

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

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