On 8/8/20 1:19 PM, Jeff Squyres (jsquyres) via users wrote:
On Aug 7, 2020, at 12:52 PM, Oddo Da via users <users@lists.open-mpi.org
<mailto:users@lists.open-mpi.org>> wrote:
The Java bindings support "recent" JDK, and if you face an issue,
please report a bug (either here or on github)
Starting with Java 8, the language went into a much different
direction - functional programming, lambdas, streams, concurrency. It
is not at all the language we may remember from the early 2000s. At
JDK 9 or 10+ I think it supports actor based concurrency. So, the
"recent" part is rather vague - I was hoping for a particular JDK
minimum :-)
As Ralph mentioned, the Java bindings were added quite a while ago. I'm
afraid I don't know which JDK is the minimum level, but they probably
support fairly old versions (probably JDK 7? Maybe 6? I don't know
offhand).
Specifically, there were a few Java MPI experiments in the 90's/early
2000's. Those kinda fizzled out. The Open MPI Java bindings was an
attempt by some Open MPI community members to revamp/modernize the
earlier Java MPI bindings, and specifically to bridge some of the
performance gap that the earlier work saw (by using the Java bridge to
the underlying C bindings, which didn't exist at the time of the first
Java experiments). It was largely successful within its defined goals.
I am not a Java expert, but I understand that the authors also
modernized the interface a bit, too.
That being said, as you mentioned, JDK 9/10 have changed many, many
things. The Java MPI bindings in Open MPI have not been following the
evolution of the JDK, so there is no usage of modern JDK
abstractions/language features.
That being said, Open MPI is quite definitely an open source project.
If you have some thoughts about how to improve the existing Java
bindings, that would be great! The Open MPI Java bindings are *not*
recognized by the MPI Forum, however -- they are a cool side project and
I think at least a small number of apps used them. But they never
caught wide-spread usage or popularity. That being said, if there's
some interesting, publish-worthy stuff to pursue here, well, that's part
of why the Open MPI project exists. :-)
Some Ping pong tests using the Java interface, JDK 8
https://github.com/mboysan/ping-pong-mpi-tcp
Perhaps there might be interest in porting the other OSU or Intel MPI
benchmarks to this?
There are also some parallel Java PGAS related projects that might
possibly use at some point some of the OpenMPI components:
https://pcj.icm.edu.pl/
https://wiki.rice.edu/confluence/display/PARPROG/HJ+Library
http://mpj-express.org/