next up previous
Next: Overview of this article Up: Introduction Previous: Introduction

Related work

Early work by two of the current authors on Java MPI bindings is reported in[9][10]. In these papers we compared various approaches to parallel programming in Java, including sockets and MPI programming. A comparable approach to creating full Java

MPI interfaces is used by JCI[4], the Java-to-C interface generator. In JCI, Java wrappers are automatically generated from the C MPI header. This eases the implementation work, but does not lead to a fully object-oriented API.

MPIJ is a completely Java-based implementation of MPI which runs as part of the Distributed Object Group Metacomputing Architecture[12] (DOGMA). Being closely modelled on the MPI-2 C++ bindings, MPIJ implements a large subset of MPI functionality. MPIJ communication uses native marshalling of primitive Java types. This technique allows MPIJ to achieve communications speeds comparable with native MPI implementations. jmpi[13] is an MPI environment built upon JPVM[14], a Java-based implementation of PVM. jmpi, offers a full Java API to MPI 1.1 as well as features such as thread safety and multiple communication end-points per task. jmpi is a pure Java MPI environment, but is complicated by the need to call JPVM methods. Another recently announced Java MPI interface, called JavaWMPI[15], is built upon the Windows MPI environment WMPI[20]. JavaWMPI has a very similar in structure to mpiJava, but the syntax of the interface is less object-oriented and a procedural method is used to perform polymorphism between Java datatypes.

MPI Software Technology, Inc. has also announced their intention to deliver a commercial Java interface to MPI called JMPI[16]. Java implementations of the related PVM message-passing environment have been reported by Yalamanchilli et. al.[17] and The MPI Forum[6]. Many of the above-mentioned groups, as part of the Java Grande forum activities, have recently published a position paper[18] in an attempt to standardise on a single API.


next up previous
Next: Overview of this article Up: Introduction Previous: Introduction
Bryan Carpenter 2002-07-11