next up previous
Next: Instrumentation Problems Up: Performance Instrumentation for Previous: Performance Instrumentation for

mpiJava

While there are several design issues that determine how a message communication interface for Java is implemented[6], we considered mpiJava [2] for our work. mpiJava is an object-oriented interface to MPI that allows a Java program to access MPI entities such as objects, routines, and constants. While mpiJava relies on the existence of native MPI libraries, its API is implemented as a Java wrapper package that uses C bindings for MPI routines. In contrast, the reference implementation for MPJ [1], the Java Grande Forum's MPI-like message-passing API, will rely heavily on RMI and Jini for finding computational resources, creating slave processes, and handling failures; user-level communication will be implemented efficiently, directly on top of Java sockets, not a native MPI library. For mpiJava, when a Java application creates an object of the MPI class, mpiJava loads a native dynamic shared object ( libmpijava.so) in the address space of the Java Virtual Machine (JVM). This Java package is layered atop the native MPI library using the Java Native Interface (JNI) [14]. There is a one-to-one mapping between Java methods and C routines. Applications are invoked using a script file prunjava that calls the mpirun application for distributing the program to one or more nodes.



Sameer Suresh Shende
Mon Mar 12 14:44:42 PST 2001