MPI and Java: redux
In a prior blog entry, I discussed how we are resurrecting a Java interface for MPI in the upcoming v1.7 release of Open MPI.
Some users have already experimented with this interface and found it lacking, in at least two ways:
- Creating datatypes of multi-dimensional arrays doesn’t work because of how Java handles them internally
- The interface only supports a subset of MPI-1.1 functions
These are completely valid criticisms. And I’m incredibly thankful to the Open MPI user community for taking the time to kick the tires on this interface and give us valid feedback.
I’ll even add a third criticism: the interface isn’t so much a binding as it is a mini class library — it adds some semantics that are above and beyond what MPI specifies. I personally think that any semantics that are not strictly necessary for the language and not part of the MPI specification should be avoided.
Lesson learned; we now know more about this interface than when we started.
We’d like to fix these problems, but because Java has kinda faded out from the HPC community, we have no Java experts in the Open MPI developer community. Do you want to help?
Remember that Java has come a long way since it debuted (and subsequently flopped) in the HPC community in the late-1990’s / early 2000’s.
A reasonable MPI interface to Java could be quite interesting, particularly since the Hadoop community (and other Java-based communities) want to do more and more heavy duty computation, and are therefore looking to parallelism to scale out. They’re looking at using MPI as their IPC API rather than re-inventing the wheel themselves.
If you’d like to help, I’d like to talk to you. I think there’s plenty of room for good research and innovation here; at an absolute minimum, it’s got to be worth a few papers. Ping me in the comments or email if you’re interested.