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:
- the main function of MPI is to allow communication between related processes running in parallel in a cluster. Is this correct?
- 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?