Java for high performance computing: assessment of current research and practice

The rising interest in Java for High Performance Computing (HPC) is based on the appealing features of this language for programming multi-core cluster architectures, particularly the built-in networking and multithreading support, and the continuous increase in Java Virtual Machine (JVM) performance. However, its adoption in this area is being delayed by the lack of analysis of the existing programming options in Java for HPC and evaluations of their performance, as well as the unawareness of the current research projects in this field, whose solutions are needed in order to boost the embracement of Java in HPC. This paper analyzes the current state of Java for HPC, both for shared and distributed memory programming, presents related research projects, and finally, evaluates the performance of current Java HPC solutions and research developments on a multi-core cluster with a high-speed network, InfiniBand, and a 24-core shared memory machine. The main conclusions are that: (1) the significant interest on Java for HPC has led to the development of numerous projects, although usually quite modest, which may have prevented a higher development of Java in this field; and (2) Java can achieve almost similar performance to native languages, both for sequential and parallel applications, being an alternative for HPC programming. Thus, the good prospects of Java in this area are attracting the attention of both industry and academia, which can take significant advantage of Java adoption in HPC.

[1]  Michael Philippsen,et al.  More efficient serialization and RMI for Java , 2000, Concurr. Pract. Exp..

[2]  Rajeev Thakur,et al.  Optimization of Collective Communication Operations in MPICH , 2005, Int. J. High Perform. Comput. Appl..

[3]  Jason Maassen,et al.  Ibis: a flexible and efficient Java-based Grid programming environment: Research Articles , 2005 .

[4]  Henri E. Bal,et al.  Run‐time optimizations for a Java DSM implementation , 2003, Concurr. Comput. Pract. Exp..

[5]  J. Dongarra,et al.  The Impact of Multicore on Computational Science Software , 2007 .

[6]  Jason Maassen,et al.  Ibis: a flexible and efficient Java‐based Grid programming environment , 2005, Concurr. Pract. Exp..

[7]  Geoffrey C. Fox,et al.  MPIJAVA: An Object-Oriented JAVA Interface to MPI , 1999, IPPS/SPDP Workshops.

[8]  Mark Kambites,et al.  An OpenMP‐like interface for parallel programming in Java , 2001, Concurr. Comput. Pract. Exp..

[9]  Stéphane Genaud,et al.  P2P-MPI: A Peer-to-Peer Framework for Robust Execution of Message Passing Parallel Programs on Grids , 2007, Journal of Grid Computing.

[10]  Sathish S. Vadhiyar,et al.  Towards an Accurate Model for Collective Communications , 2001, Int. J. High Perform. Comput. Appl..

[11]  Hongwei Zhang,et al.  Jdib: Java Applications Interface to Unshackle the Communication Capabilities of InfiniBand Networks , 2007, 2007 IFIP International Conference on Network and Parallel Computing Workshops (NPC 2007).

[12]  Alan Kaminsky Parallel Java: A Unified API for Shared Memory and Cluster Parallel Programming in 100% Java , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.

[13]  Guangwen Yang,et al.  Jcluster: an efficient Java parallel environment on a large‐scale heterogeneous cluster , 2006, Concurr. Comput. Pract. Exp..

[14]  Juan Touriño,et al.  NPB-MPJ: NAS Parallel Benchmarks Implementation for Message-Passing in Java , 2009, 2009 17th Euromicro International Conference on Parallel, Distributed and Network-based Processing.

[15]  Geoffrey C. Fox,et al.  mpiJava 1.2: API Specification , 1999 .

[16]  Aamir Shafi,et al.  Towards efficient shared memory communications in MPJ express , 2009, 2009 IEEE International Symposium on Parallel & Distributed Processing.

[17]  Jason Maassen,et al.  Efficient Java RMI for parallel programming , 2001, TOPL.

[18]  Grégory Mounié,et al.  Performance characterisation of intra-cluster collective communications , 2004 .

[19]  Michael Philippsen,et al.  JaMP: an implementation of OpenMP for a Java DSM , 2007, Concurr. Comput. Pract. Exp..

[20]  Denis Caromel,et al.  Object-oriented SPMD , 2005, CCGrid 2005. IEEE International Symposium on Cluster Computing and the Grid, 2005..

[21]  Luiz Angelo Steffenel,et al.  Fast Tuning of Intra-cluster Collective Communications , 2004, PVM/MPI.

[22]  Vaidy S. Sunderam,et al.  RMIX: a multiprotocol RMI framework for Java , 2003, Proceedings International Parallel and Distributed Processing Symposium.

[23]  Katherine A. Yelick,et al.  Titanium: A High-performance Java Dialect , 1998, Concurr. Pract. Exp..

[24]  Robert A. van de Geijn,et al.  Collective communication: theory, practice, and experience: Research Articles , 2007 .

[25]  Juan Touriño,et al.  F-MPJ: scalable Java message-passing communications on parallel systems , 2012, The Journal of Supercomputing.

[26]  Geoffrey C. Fox,et al.  MPJ: MPI-like message passing for Java , 2000 .

[27]  Juan Touriño,et al.  High Performance Java Remote Method Invocation for Parallel Computing on Clusters , 2007, 2007 12th IEEE Symposium on Computers and Communications.

[28]  Robert A. van de Geijn,et al.  Collective communication: theory, practice, and experience , 2007, Concurr. Comput. Pract. Exp..

[29]  Mark Baker,et al.  Nested parallelism for multi-core HPC systems using Java , 2009, J. Parallel Distributed Comput..

[30]  Martin D. Westhead,et al.  A benchmark suite for high performance Java , 2000, Concurr. Pract. Exp..

[31]  Katherine A. Yelick,et al.  Titanium Performance and Potential: An NPB Experimental Study , 2005, LCPC.

[32]  William Pugh,et al.  MPJava: High-Performance Message Passing in Java Using Java.nio , 2003, LCPC.

[33]  Denis Caromel,et al.  Current State of Java for HPC , 2008 .

[34]  JinHo Ahn,et al.  Implementation and Performance Evaluation of Socket and RMI based Java Message Passing Systems , 2007, 5th ACIS International Conference on Software Engineering Research, Management & Applications (SERA 2007).

[35]  Mark Baker,et al.  A comparative study of Java and C performance in two large-scale parallel applications , 2009 .

[36]  Juan Touriño,et al.  Performance analysis of message-passing libraries on high-speed clusters , 2010, Comput. Syst. Sci. Eng..

[37]  Juan Touriño,et al.  Java Fast Sockets: Enabling high-speed Java communications on high performance clusters , 2008, Comput. Commun..

[38]  Rob van Nieuwpoort,et al.  MPJ/Ibis: A Flexible and Efficient Message Passing Platform for Java , 2005, PVM/MPI.

[39]  Juan Touriño,et al.  Performance analysis of Java message-passing libraries on fast Ethernet, Myrinet and SCI clusters , 2003, 2003 Proceedings IEEE International Conference on Cluster Computing.