7
Jul
0

C++ – MPI an quick overview (which distribution is the best?)

MPI (for Message Passing Interface) is a specification to enable communication between process. It is a standard implemented by many libraries. Each one has its advantages and disadvantages. I will try in this post to give a quick MPI description and give some information about the different libraries.

MPI as a standard

MPI is not a library, it is a definition/specification. You can find the documentation and the description here :

http://www.mcs.anl.gov/research/projects/mpi/

As you can see there are two versions : 1.0 and 2.0

Nowadays most of libraries used the specification 2.0 (but some libraries have not been updated and use 1.0 standard).

MPI – Message Passing Interface – for parallel programming

From Wikipedia :

MPI is a specification for an API that allows many computers to communicate with one another. It is used in computer clusters and supercomputers.

In other words, if you need to solve a big problem or run a big simulation you may need to use parallel programming. To understand what is parallel programming I recommend you to start with multi threading. Then, you can use parallel computing (and finally if you want, why not look at distributed programming).

With parallel programming you will cut you problem in several tasks. This tasks may be “interdependent ” (somewhere in its algorithm a task may need a result/data from another task). So, they need to communicate, to synchronize and to be deployed. Using a MPI library makes this concepts very easy. You can send signals or data by calling one function without knowing if it used network or shared memory… Then your program can run on cluster or on one computer.

MPI Libraries (not all, but some of them…)

OpenMPI

Developers : Bull, IBM, Cisco, INRIA, Etc.

MPI Version : MPI-2

OS : Linux, OS X, Solaris (both 32 and 64 on all platforms) and Windows (Windows XP, Windows HPC Server 2003/2008 and also Windows 7 RC)

Comment : My choice. It is, with MPICH, the best one I think.

Url : http://www.open-mpi.org/

MPICH

Developers : Intel, IBM, INRIA, etc.

MPI Version : MPI-1 & MPI-2

OS : Linux (on IA32 and x86-64), Mac OS/X (PowerPC and Intel), Solaris (32- and 64-bit), and Windows

Comment : Many developer used this library.

Url : http://www.mcs.anl.gov/research/projects/mpich2/

MPI.NET

Developers : Indiana University

MPI Version : ?

OS : Windows, Work on other OS with Mono

Comment : Support all .Net languages, Seems to be very efficient on Windows!

Url : http://osl.iu.edu/research/mpi.net/

MPI Lib

Developer : Michael J. Fromberger

MPI Version : ?

OS : Linux on x86 and PowerPC, IRIX on MIPS, AIX on RS/6000 and POWER2, Digital Unix on Alpha), MacOS, and Windows 98

Comment : Seems to be a huge work for one man!

Url : http://spinning-yarns.org/michael/mpi/

OOMPI

Developers : Indiana University

MPI Version : MPI-1

OS : ?

Comment : it is object oriented! but not up to date

Url : https://osl.iu.edu/download/research/oompi/oompi.pdf

Boost.MPI

Developers : Boost Community (& Douglas Gregor, Matthias Troyer, Trustees of Indiana University)

MPI Version : ?

OS : ?

Comment : Well, I did not find a lot of information about it. I think that it can be a good solution in a program that already use Boost.

Url : http://www.boost.org/doc/libs/1_43_0/doc/html/mpi.html

MacMPI

Developers : Viktor Decyk, Dean Dauger, Pieter Kokelaar

MPI Version : ?

OS : Mac Os (of course)

Comment : Seems to be very good for Mac User!! But maybe a little old.

Url : http://exodus.physics.ucla.edu/appleseed/appleseed.html

LAM MPI

Developers : From Indiana University, University of Notre Dame & Ohio State University

MPI Version : MP-1 & MPI-2

OS : any POSIX-like operating systems

Comment : A good solution and works on heterogeneous environment (but posix-like only)

Url : http://www.lam-mpi.org/download/

Resources:

http://www.openmask.org/wiki/index.php?title=MPI_Installation_sous_windows#Multiprocessus_sur_une_seule_machine

http://hpc.sourceforge.net/

http://en.wikipedia.org/wiki/Message_Passing_Interface

http://www.mcsr.olemiss.edu/appssubpage.php?pagename=mpi.inc

Enjoyed reading this post?
Subscribe to the RSS feed and have all new posts delivered straight to you.

Comments are closed.

Celadon theme by the Themes Boutique