Cisco Blogs

Cisco Blog > High Performance Computing Networking

MPI: Messages, Not Streams

Periodically, new MPI developers get confused about MPI because they’re coming from environments where they’re used to dealing with streams for inter-process communication: TCP sockets, bi-directional POSIX pipes, etc.

Streams are simple flows of bytes. For example, when you write a 32-byte buffer down a TCP socket, it’s just an in-order sequence of bytes. When the receiver actually tries to receive the message, it may receive some, all, or none of those 32 bytes, depending on the receiver’s timing.

MPI presents a simpler abstration to applications: the application will receive nothing until it receives an entire incoming message.

Let me explain.

Read More »

Tags: ,

Which to use: tags or communicators?

A common question from new MPI developers is: which should I use to separate my messages — tags or communicators?

If you didn’t already know MPI offers two key abstractions for message passing:

  • Message delineation.  If you’re a TCP sockets programmer, you’re used to receiving streams of bytes.  For example, if you try to receive 32 bytes, you might receive 17 bytes, meaning that you have to loop around and try again to receive the remaining 15 bytes.  MPI doesn’t have streams; MPI only has atomic messages.  For example, if you send 16 integers, the receiver will receive 16 integers (not 15 integers, not 17 bytes — they’ll receive the entire 16 integers all at once).
  • Message separation.  As mentioned in the first sentence, MPI offers two key mechanisms for separating messages: tags and communicators.  We’ll dive into both in this blog post; I’ll explain the differences and when you might want to use one over the other.

Read More »

Tags: ,

MPI-3.0 Draft 2 public comment period

Dear MPI user,

The MPI-Forum is about to ratify the MPI-3.0, a new version of the MPI standard.  As part of this process, we are soliciting feedback on the current draft standard.  The draft document can be found here:

We are seeking the following feedback in particular:

  • Small requests/corrections that can be resolved before finishing 3.0.
  • Requests for clarification of unclear text or undefined behavior.
  • Undetected severe inconsistencies or bugs that may delay the standard publication.
  • Wishes for additional enhancements or new functionality to be taken into account after 3.0 is published.

Please comment before Sep. 6, 2012 as follows:

  1. Subscribe to:
  2. Then send your comments to:

Messages sent from an unsubscribed e-mail address will not be considered.

Thank you in advance for your help.

Best regards,
The MPI Forum

Tags: , ,

MPI-3.0: What’s the holdup?

A few people have asked me questions about MPI-3 recently, such as:

  1. What took so long?
  2. Why isn’t another draft version of MPI-3.0 available yet?
  3. When do you expect the final version of the MPI-3.0 document to be available?
  4. When do you expect MPI-3.0 implementations to be available?

These are all good questions.  Let me answer each of them individually…

Read More »

Tags: , ,

MPI progress

From my blog post about the upcoming MPI-3 draft spec, Geoffrey Irving asked a followup question:

Can you describe the difference between the current situation and true background progression? Does the lack of background progression mean having to occasionally explicitly relinquish control to MPI in order to let one-sided operations proceed? Once true background progression is in place, would it involve extra threads and context switching, or use some other mechanism?

A great question.  He asked it in the context of the new MPI-3 one-sided stuff, but it’s generally applicable for other MPI operations, too (even MPI_SEND / MPI_RECV).

Read More »

Tags: , , ,