Skip main navigation

Hands-on: Message chain

Message chain using MPI
© CSC - IT Center for Science Ltd.

In this exercise we explore a typical communication pattern, one-dimensional acyclic chain.

Source code for this exercise is located in mpi/message-chain/

Write a simple program where every MPI task sends data to the next one. Let
ntasks be the number of the tasks, and myid the rank of the current
task. Your program should work as follows:

  • Every task with a rank less than ntasks-1 sends a message to task myid+1.
    For example, task 0 sends a message to task 1.
  • The message content is an integer array where each element is initialized to
  • The sender prints out the number of elements it sends.
  • All tasks with rank ≥ 1 receive messages.
  • Each receiver prints out their myid, and the first element in the received
  1. Implement the program described above using Send and Recv.
  2. Use Sendrecv instead of Send and Recv when sending and receiving.
  3. Can the code be simplified using MPI.PROC_NULL?
© CSC - IT Center for Science Ltd.
This article is from the free online

Python in High Performance Computing

Created by
FutureLearn - Learning For Life

Our purpose is to transform access to education.

We offer a diverse selection of courses from leading universities and cultural institutions from around the world. These are delivered one step at a time, and are accessible on mobile, tablet and desktop, so you can fit learning around your life.

We believe learning should be an enjoyable, social experience, so our courses offer the opportunity to discuss what you’re learning with others as you go, helping you make fresh discoveries and form new ideas.
You can unlock new opportunities with unlimited access to hundreds of online short courses for a year by subscribing to our Unlimited package. Build your knowledge with top universities and organisations.

Learn more about how FutureLearn is transforming access to education