Object-based collective communication in Java

CCJ is a communication library that adds MPI-like collective operations to Java. Rather than trying to adhere to the precise MPI syntax, CCJ aims at a clean integration of collective communication into Java's object-oriented framework. For example, CCJ uses thread groups to support Java's multithreading model and it allows any data structure (not just arrays) to be communicated. CCJ is implemented entirely in Java, on top of RMI, so it can be used with any Java virtual machine. The paper discusses three parallel Java applications that use collective communication. It compares the performance (on top of a Myrinet cluster) of CCJ, RMI and mpiJava versions of these applications, and also compares the code complexity of the CCJ and RMI versions. The results show that the CCJ versions are significantly simpler than the RMI versions and obtain a good performance.

[1]  Dennis Gannon,et al.  Java RMI performance and object model interoperability: experiments with Java/HPC++ , 1998 .

[2]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[3]  Vladimir Getov,et al.  Towards Portable Message Passing in Java: Binding MPI , 1997, PVM/MPI.

[4]  Message P Forum,et al.  MPI: A Message-Passing Interface Standard , 1994 .

[5]  Jack Dongarra,et al.  PVM: Parallel virtual machine: a users' guide and tutorial for networked parallel computing , 1995 .

[6]  Jason Maassen,et al.  Efficient replicated method invocation in Java , 2000, JAVA '00.

[7]  Anthony Skjellum,et al.  The JMPI Commercial Message Passing Environment and Specification: Requirements, Design, Motivatio , 1998 .

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

[9]  Mitsuhisa Sato,et al.  Template based structured collections , 2000, Proceedings 14th International Parallel and Distributed Processing Symposium. IPDPS 2000.

[10]  Peter R. Cappello,et al.  Javelin++: scalability issues in global computing , 1999, JAVA '99.

[11]  Vladimir Getov,et al.  High-Performance Parallel Programming in Java: Exploiting Native Libraries , 1998, Concurr. Pract. Exp..

[12]  Jason Maassen,et al.  An efficient implementation of Java's remote method invocation , 1999, PPoPP '99.

[13]  Charles L. Seitz,et al.  Myrinet: A Gigabit-per-Second Local Area Network , 1995, IEEE Micro.

[14]  Henri E. Bal,et al.  User-Level Network Interface Protocols , 1998, Computer.

[15]  Jason Maassen,et al.  Wide‐area parallel programming using the remote method invocation model , 2000 .

[16]  Vivek Sarkar,et al.  The Jalape ~ no Dynamic Optimizing Compiler for Java TM , 1999 .

[17]  George K. Thiruvathukal,et al.  Java on networks of workstations (JavaNOW): a parallel computing framework inspired by Linda and the Message Passing Interface (MPI) , 2000 .

[18]  Henri E. Bal,et al.  MagPIe: MPI's collective communication operations for clustered wide area systems , 1999, PPoPP '99.

[19]  Geoffrey C. Fox,et al.  The Gateway system: uniform web based access to remote resources , 2000 .

[20]  Chris J. Scheiman,et al.  SuperWeb: research issues in Java‐based global computing , 1997 .

[21]  Anthony Skjellum,et al.  A High-Performance, Portable Implementation of the MPI Message Passing Interface Standard , 1996, Parallel Comput..

[22]  Vladimir Getov,et al.  MPI and Java-MPI: Contrasts and Comparisons of Low-Level Communication Performance , 1999, ACM/IEEE SC 1999 Conference (SC'99).

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

[24]  Message Passing Interface Forum MPI: A message - passing interface standard , 1994 .

[25]  K Thomas The Function Object Pattern , 1997 .

[26]  Mark J. Clement,et al.  DOGMA: distributed object group metacomputing architecture , 1998, Concurr. Pract. Exp..

[27]  Peter R. Cappello,et al.  Javelin++: scalability issues in global computing , 2000 .

[28]  Henri E. Bal,et al.  Performance evaluation of the Orca shared-object system , 1998, TOCS.