Cisco Blogs

Cisco Blog > High Performance Computing Networking

Taking MPI Process Affinity to the Next Level

Process affinity is a hot topic.  With commodity servers getting more and more complex internally (think: NUMA and NUNA), placing and binding individual MPI processes to specific processor, cache, and memory resources is becoming quite important in terms of delivered application performance.

MPI implementations have long offered options for laying out MPI processes across the resources allocated for the job.  Such options typically included round-robin schemes by core or by server node.  Additionally,  MPI processes can be bound to individual processor cores (and even sockets).

Today caps a long-standing effort between Josh Hursey, Terry Dontje, Ralph Castain, and myself (all developers in the Open MPI community) to revamp the processor affinity system in Open MPI.

The first implementation of the Location Aware Mapping Algorithm (LAMA) for process mapping, binding, and ordering has been committed to the Open MPI SVN trunk.  LAMA provides a whole new level of processor affinity control to the end user.

Read More »

Tags: , , , , , ,

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: , ,