MPJ Express is an open source Java message passing library that allows application developers to write and execute parallel applications for multicore processors and compute clusters/clouds. The software is distributed under the MIT (a variant of the LGPL) license.
MPJ Express blogs have the latest news and updates.
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
MPJ Express is used by thousands of users globally, which include some
leading international organizations and universities. Some of the
efforts using MPJ Express include:
- 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
Parallel Programming Courses using MPJ Express