1

I'm looking into various parallel programming models and I just stumbled upon MPI. There are a few things I'm not sure about. From what I understand:

  1. the main function of MPI is to allow communication between related processes running in parallel in a cluster. Is this correct?
  2. programs are run on the master node, which in turn communicates specific tasks to the worker nodes - and receives the results. There is no need for a copy of the code to be on each worker node.

Also, the few updated MPI frameworks I found only seem to support a restricted set of languages. I was looking at experimenting with this in Java but all the Java MPI libraries I found were either dated or didn't seem to have the maturity of those for C and Fortran. Why is that? I think that message passing would be a pretty useful feature for anyone who writes a parallel or distributed program, so why isn't MPI more popular outside of its niche?

3
  • MPI is more used in scientific programming, it has a history of use there and the language of choice (for a long time) of the scientific community has been/is C/Fortran. Commented Aug 5, 2013 at 13:51
  • (1) is correct; (2) isn't. Commented Aug 5, 2013 at 15:01
  • so why isn't MPI more popular outside of its niche? Probably because the people who manage the development of MPI and its user community don't care about its popularity outside its niche, rather they care about its effectiveness and efficiency within its niche. MPI isn't the only message passing library around, Java programmers have other options available. Commented Aug 7, 2013 at 8:41

1 Answer 1

3

MPI is traditionally a SPMD model where one code runs on lots of processes (usually distributed over a number of nodes/processors/cores/etc.). Those processes explicitly pass messages using the calls in MPI (Message Passing Interface). Then the individual processes can go off to do their work and communicate again when necessary. It's not a task language where the jobs can be automatically distributed to the worker nodes. There are other languages that do that sort of thing (Hadoop/MapReduce, Charm++, etc. might fit more into that model).

In the MPI Standard (http://www.mpi-forum.org/docs/docs.html) that's decided on by the MPI Forum, there are specific language requirements that are specified. Up to now, there have only been three languages that are required for an MPI implementation: C, C++, and FORTRAN (and actually the C++ requirement has been removed). The reason for this is that these are the languages most commonly used by the scientific applications that use MPI. This doesn't prevent other language bindings from existing, but supporting every language is a big burden for implementations and not always feasible. There are lots of other language bindings available:

I'm sure there are more than this out there for some more exotic languages. Just search for MPI and you're sure to find information. MPI is actually pretty popular, even outside of the scientific community. There have been attempts to use it in the video game community, distributed databases, and others. However, scientific computing continues to be one of the biggest users of MPI and remains one of the Forum's main focuses.

Sign up to request clarification or add additional context in comments.

3 Comments

Yes, but I just checked out the Java link you posted. It's all "temporary", "still working on", "on-going".... Doesn't give the impression that it's either popular or mature.
You're right. It hasn't been around for a long time so it's not going to be as mature as the "officially supported" languages. However, it will (AFAIK) work. You might need to get the nightly tarballs instead of the last release, but you can keep up that way. I can't speak to its popularity.
You're right that the Open MPI Java implementation is "temporary". FWIW, we're literally just about to commit a new version of it to the Open MPI SVN trunk -- probably later this week. It's much more complete than the prior version, has a bit better performance, tastes great, is less filling, etc. Check open-mpi.org/nightly/trunk for nightly snapshot tarballs later this week. There will be a README for Java in there that describes how to use it, etc.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.