Cisco Blogs

Cisco Blog > High Performance Computing Networking

“All of life is not #MPI”

I retweeted a tweet today that may seem strange for an MPI guy.  I was echoing the sentiment that not everything in HPC revolves around MPI.

My rationale for retweeting is simple: I agree with the sentiment.

But I do want to point out that this statement has multiple levels to it.

Read More »

Tags: ,

Connection Management

One of the nice features of MPI is that its applications don’t have to worry about connection management.  There’s no concept of “open a connection to peer X” — in MPI, you just send or receive from peer X.

This is somewhat similar to many connectionless network transports (e.g., UDP) where you just send to a target address without explicitly creating a connection to that address.  But it’s different in a key way from many connectionless transports (e.g., UDP): MPI’s transport is reliable, meaning that whatever you send is guaranteed to get there.

All this magic happens under the covers of the MPI API.  It means that in some environments, MPI must manage connections for you, and also must guarantee reliable delivery.

Read More »

Tags: ,

Hardware Locality 1.2.1 and 1.3rc1 released

In the vein of awesome software releases (ahem…), Hardware Locality (hwloc) v1.2.1 has been released.  As the “.1″ implies, this is a bug fix release of a bunch of little things that crept in the 1.2 series.  A full list of the news-worthy items can be found here.

But more awesome than that is the fact that Hwloc 1.3rc1 has also been released.  The Hwloc 1.3 series brings in some major new features.  The list of new features can be found below.

Read More »

Tags: , , ,

Open MPI v1.5.4 released

We released Open MPI v1.5.4 last week.  Woo hoo!

I can’t exactly predict the future, but I anticipate having one more release before transitioning it to 1.6 (i.e., transitioning it from a “feature” release series to a “stable” release series where only bug fixes will be applied).

The v1.5 series is actually progressing quite nicely towards v1.6.  It has gotten a lot of run time on real-world machines in production environments, and many bugs have shaken out.  And there are many new, shiny toys on our development trunk that are slated for v1.7 (i.e., they won’t go into the v1.5/v1.6 series).

Read More »

Tags: , , ,

The anatomy of MPI implementation optimizations

MPI implementations are large, complex beasts.  By definition, they span many different layers ranging from the user-level implementation all the way down to sending 1s and 0s across a physical network medium.

However, not all MPI implementations actually “own” the code at every level.  Consider: a TCP-based MPI implementation only “owns” the user-level middleware.  It cannot see or change anything in the TCP stack (or below).  Such an implementation is limited to optimizations at the user space level.

That being said, there certainly are many optimizations possible at the user level.  In fact, user space is probably where the largest number of optimizations are typically possible.  Indeed, nothing can save your MPI_BCAST performance if you’re using a lousy broadcast algorithm.

However, lower-layer optimizations are just as important, and can deliver many things that simply cannot be effected from user space.

Read More »

Tags: , , , ,