Reputation: 2183
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:
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?
Upvotes: 1
Views: 294
Reputation: 9062
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.
Upvotes: 3