views:

223

answers:

4

I've never used Message Passing Interface (MPI), but I've heard its name thrown about, most recently with Windows HPC Server. I had a quick look on amazon to see if there were any books on it, but they're all dated around 7 or more years ago. Is MPI still a valid technology choice for new applications, or has it been largely superceded by other distributed programming alternatives (e.g. DataSynapse GridServer)?

As it's not really an implementation, but rather a standard, what is the likelihood (assuming it's not dead) that learning it will result in better design of distributed programming systems? Is there something else I should be looking at instead?

+7  A: 

For what MPI is good for it's still a good choice. It's just possible that there are no recent books on the topic because the existing ones are good enough and most of us using MPI don't need anything more.

I wouldn't characterise MPI as a distributed programming standard, more a standard for parallel programming on distributed memory computers -- which covers most of the largest computers in the world right now.

If I were betting on it being replaced I'd be looking at Chapel, X10, or, most likely, Fortran 2008.

What you should be looking at depends on your requirements, but if they include high-performance number-crunching for scientific and engineering codes, Fortran or C/C++ with MPI should be in your sights. I've never heard of DataSynapse GridServer, a quick Google suggests to me that it's aimed at a completely different class of computational problems.

EDIT: I just checked Amazon for books 'on MPI'. While the Gropp et al books are a bit old now, there are still plenty of other books being published which cover (use of) MPI. This is, in part, a reflection of the usage of MPI. It's not terribly interesting to computer scientists so there aren't many books on 'MPI for MPI's sake', but it is of interest to many computational scientists, so there's a steady stream of 'physics with MPI' and 'engineering with MPI' books. If these are outside your sphere of interest, MPI probably is too.

High Performance Mark
I'm interested in it from a research perspective - I don't have an immediate application in mind that would cause me to to pick up the domain specific physics or engineering books. And I probably wouldn't understand them anyway. Your answer is very informative, so I guess my question should probably be rephrased "What specific problem class is MPI good for?"
Jono
That's a different question. Ask it and see what replies you get.
High Performance Mark
+1  A: 

The MPI standard is in active development: http://meetings.mpi-forum.org/MPI_3.0_main_page.php

The main issue is that now we have some machines with over 10,000 processors, and MPI itself his having a hard time scaling. Lots of open research problems. http://www.springerlink.com/content/q11r042317g88230/

Chad Brewbaker
A: 

Why do you need a book? The API is well documented.

On distributed systems you dont really have any other option besides MPI.

Some Fortran compilers like the one from Cray and G95 support coarrays. Then you have UPC but I havent seen anyone using it.

rusi.pathan
A: 

Well probably because there's not 'enough to it' (or user base is still too small, or they're too smart) for just the API description and a few examples, to support a separate book. Lots of books of parallel programming do cover it as one of several parallel methods, though. One recent one (Feb 2010) is: "Parallel Programming: For Multicore and Cluster Systems" By Thomas Rauber, Gudula Rünger. I haven't read it, I mention it because it's recent, and by real experts in the field (both => MPI isn't dead). As for the best book to help you wrap your head around how to use MPI, I can only refer you to people's reviews on Amazon. But look for 'parallel' in the title.

JDonner