Java for High Performance Computing
Almost immediately following its release in 1996 Java became a mainstream programming language of the software industry. Various computer scientists have argued that Java could make an excellent language for developing High Performance Computing (HPC) applications.
Compared with C or Fortran, the advantages of the Java programming language include higher-level programming concepts, improved compile time and runtime checking, and, as a result, faster problem detection and debugging. In addition, Java's automatic garbage collection, when exploited carefully, relieves the programmer of many of the pitfalls of lower-level languages. A highly attractive feature of applications written in Java is that they are portable to any hardware or operating system, provided that there is a Java Virtual Machine (JVM) for that system. The contribution of the JVM is significant, keeping in mind that it allows programmers to focus on issues related to their application and domain of interest, and not on system heterogeneity.
To enable HPC using Java, we developed and released MPJ
Express. Earlier efforts for building a Java messaging systems
have typically followed either the JNI approach, or the pure
Java approach. On commodity platform like Fast Ethernet,
advances in JVM technology now enable networking applications
written in Java to rival their C counterparts. On the other
hand, improvements in specialized networking hardware have
continued, cutting down the communication costs to a couple
of microseconds. Keeping both in mind, the key issue at present
is not to debate the JNI approach versus the pure Java approach,
but to provide a flexible mechanism for applications to swap
communication protocols.
What is MPJ Express?
MPJ Express is an implementation of the Java bindings for the MPI
standard. The system implements thread-safe communication in a Java
messaging system to make it compliant with Javas threading. This
library addresses contradictory issues of high-performance and
portability by providing communication devices using Java NIO (pure
Java) and Myrinet. It is possible for end users to switch communication
protocols at runtime.
List of Projects using MPJ Express
- Cartablanca is an object oriented physical system simulation package. The code uses Jacobian-Free Newton-Krylov (JFNK) methods to solve non-linear physics simulations on unstructured meshes. An earlier version of the software exploited Java's built-in thread facility. Later a version was parallelized using JavaParty that allows forking threads on remote computers. More recently Cartablanca has been parallelized using MPJ Express.
- Andy Turner from University of Leeds has used MPJ Express in an Economic and Social Research Council (ESRC) funded project called Modelling and Simulation in e-Social Science (MoSeS).
- MPJ Express is part of the Pooch software. According to Pooch software website, "Pooch is software providing the easiest way to assemble and operate a high-performance parallel computer". In this context, a press statement released at the Supercomputing conference in Reno, Nevada can be seen here .
- Bahi et al conducted a study to compare MPJ Express with the Jace environment for implementing parallel iterative methods. A paper describing this research can be seen here .
- Todd Kaplan at the Santa Fe Institute is using MPJ Express to evolve genetic programming agents. The evolution allows these agents to trade in a simulated market environment. The market clearing mechanism is a replica of that used in the London stock exchange. Todd Kaplan has designed a stack-based genetic programming languague, called Staq, that agents use to evolve trading strategies.
- Bharath Reddy, a graduate student from University of Northern British Columbia is using MPJ Express to parallelize dynamic programming algorithms in computational biology using block-cyclic based wavefront patterns.
-
Dacian Tudor et. al. in their paper "Parallel
branch and bound experiment using Java based message
passing and shared object space solution"
present a comparison of MPJ Express with JavaSpaces
by carrying out a parallel branch and bound
experiment.
Parallel Programming Courses using MPJ Express
- MPJ Express was used to conduct a hands-on workshop on High Performance Scientific Computing
- Parallel Programming using Java (PPJ)
-
Parallel Processing SS 2006
Main Components
The main components of MPJ are following,
- Runtime system.
- xdev level.
- mpjdev level.
- MPJ level.

