June 16th, 2009 9:34 am
Posted by Douglas Eadline
Tags: API, ICR, Intel Cluster Ready, Message Passing, MPI, MPICH2, MVAPICH, Open MPI, Open Source, Programming
Choices, choices, choices. What should you expect from parallel computing software?
Talk to anyone that works with high-performance computing clusters and at some point the conversation is bound to turn to MPI.
MPI stands for "Message Passing Interface". As an "Interface" -- or API (Application Programming Interface) -- MPI does not work any magic on its own and must be coupled with a programming language like Fortran or C/C++. Once a program is MPI-enabled (i.e. written in a way to pass messages/data between computing processes) it can run on a cluster or even on a multi-core node.
MPI was initially developed because vendors were each creating custom message passing libraries, leading to non-portable applications and extra coding. To resolve this, everyone needed to be working off a global template, or standard. With a standard, users could move programs from one parallel platform to another without any major work (at least in theory).
Today, MPI is a standard maintained by the MPI Forum. Because of this, there are a plethora of MPI choices for cluster users.
MPI versions generally fall into one of two camps: Open Source and commercial.
Historically, many of the open source versions of MPI were shared among early HPC users and thus became very popular.
Open Source MPI
The first two open MPI versions were MPICH and LAM/MPI. MPICH was developed by Argonne National Lab while LAM/MPI grew out of a number of University efforts. As great as these packages are, their use is now discouraged as no maintenance or code updates are planned for either version.
In their place, users should consider MPICH2 and Open MPI. If you are using InfiniBand, you may also want to look at MVAPICH. (MPICH2 and Open MPI provide InfiniBand support as well.) These versions are under active development. There are other open MPI projects, but these are the most popular.
In terms of commercial MPI versions the most popular are Intel MPI, Platform MPI (formerly Scali MPI), and HP-MPI. Each has a variety of custom features, including support, that are worth considering for your cluster.
Picking an MPI
With all the choices, which MPI is right for you?
One would think that because it is a standard all MPI are compatible and work the same. As for compatibility, most programs written with one MPI should be able to be recompiled using another MPI library. There are some issues that crop up, but for the most part the API is portable.
Implementation, however, can vary quite a bit. Indeed, there are many details of the MPI implementation that are not covered by the specification (this was intentional). Various MPIs offer different features like better performance, run-time interconnect choice, or start-up methods.
Although the multiple MPI versions are welcome by users, Independent Software Vendors (ISVs) find the multiple MPI versions difficult to support. One solution to this problem is the Intel Cluster Ready (ICR) initiative. ICL ensures that vendors will find a standard software environment every ICR certified cluster. Check with your cluster vendor about ICR options.
Intel Cluster Ready® will not limit your MPI choices, it will just make sure the ISV codes can run on your cluster.
JOIN THE CONVERSATION
You must be a Registered Member in order to comment on Cluster Connection posts.
Members enjoy the ability to take an active role in the conversations that are shaping the HPC community. Members can participate in forum discussions and post comments to a wide range of HPC-related topics. Share your challenges, insights and ideas right now.
Login Register Now