Cisco Blogs

Cisco Blog > High Performance Computing Networking

“Eager Limits”, part 2

Open MPI actually has multiple different protocols for sending messages — not just eager / rendezvous.

Our protocols were originally founded on the ideas described in this paper.  Many things have changed since that 2004 paper, but some of the core ideas are still the same.

The picture to the right shows how Open MPI divides an MPI message up into segments and sends them in three phases.  Open MPI’s specific definition of the “eager limit” is the max payload size that is sent with MPI match information to the receiver as the first part of the transfer.  If the entire message fits in the eager limit, no further transfers / no CTS is needed.

Read More »

Tags: , ,

What is an MPI “eager limit”?

Technically speaking, the MPI standard does not define anything called an “eager limit.”

An “eager limit” is term used to describe a method of sending short messages used by many MPI implementations.  That is, it’s an implementation technique — it’s not part of the MPI standard at all.  And since it’s not standardized, it also tends to be different in each MPI implementation.  More specifically: if you write your MPI code to rely on a specific implementation’s “eager limit” behavior, your code may not perform well (or may even deadlock!) with other MPI implementations.

So — what exactly is an “eager limit”?

Read More »

Tags: ,

A bucket full of new MPI Fortran features

Over this past weekend, I had the motivation and time to overhaul Open MPI’s Fortran support for the better.  Points worth noting:

  • The “use mpi” module now includes all MPI subroutines.  Strict type checking for everything!
  • Open MPI now only uses a single Fortran compiler — there’s no more artificial division between “f77” and “f90”

There’s still work to be done, of course (this is still off in a Mercurial bitbucket repo — not in the Open MPI main line SVN trunk yet), but the results of this weekend code sprint are significantly simpler Open MPI Fortran plumbing behind the scenes and a much, much better implementation of the MPI-2 “use mpi” Fortran bindings.

Read More »

Tags: , , ,

User-level timers for MPI

Fab Tillier (Microsoft MPI) and I recently proposed a set of user-level timers for MPI.  The following slides are an example of what the interface could be:

Read More »

Tags: , ,

Google Summer of Code Project: Hardware Locality and TCL

Google today announced its Summer of Code 2011 project winners.   One of the winners was a project proposed by George Andreou based off this idea on the TCL wiki: create some kind of “native” hwloc binding for TCL.

Congratulations, George!  A (brief) abstract of George’s winning project can be found here.

There’s more details involved that what is included in that abstract, of course, but I’m excited to see hwloc continue to spread and become genuinely useful to an ever-growing community. Read More »

Tags: , ,