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

Reach your personal and professional goals

Unlock access to hundreds of expert online courses and degrees from top universities and educators to gain accredited qualifications and professional CV-building certificates.

Join over 18 million learners to launch, switch or build upon your career, all at your own pace, across a wide range of topic areas.

Start Learning now