Satin: Efficient Parallel Divide-and-Conquer in Java

Satin is a system for running divide and conquer programs on distributed memory systems (and ultimately on wide-area metacomputing systems). Satin extends Java with three simple Cilk-like primitives for divide and conquer programming. The Satin compiler and runtime system cooperate to implement these primitives efficiently on a distributed system, using work stealing to distribute the jobs. Satin optimizes the overhead of local jobs using on-demand serialization, which avoids copying and serialization of parameters for jobs that are not stolen. This optimization is implemented using explicit invocation records. We have implemented Satin by extending the Manta compiler. We discuss the performance of ten applications on a Myrinet-based cluster.

[1]  Eric A. Brewer,et al.  ATLAS: an infrastructure for global computing , 1996, EW 7.

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

[3]  Robert H. Halstead,et al.  Lazy task creation: a technique for increasing the granularity of parallel programs , 1990, LISP and Functional Programming.

[4]  Aart J. C. Bik,et al.  javar: A prototype Java restructuring compiler , 1997 .

[5]  Michael Philippsen,et al.  JavaParty – transparent remote objects in Java , 1997 .

[6]  Paul Watson,et al.  Flagship: a parallel architecture for declarative programming , 1988, [1988] The 15th Annual International Symposium on Computer Architecture. Conference Proceedings.

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

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

[9]  Alan L. Cox,et al.  Java/DSM: A Platform for Heterogeneous Computing , 1997, Concurr. Pract. Exp..

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

[11]  Kang Su Gatlin,et al.  Architecture-Cognizant Divide and Conquer Algorithms , 1999, ACM/IEEE SC 1999 Conference (SC'99).

[12]  Philip J. Hatcher,et al.  Executing Java threads in parallel in a distributed-memory environment , 1998, CASCON.

[13]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[14]  John Darlington,et al.  ALICE a multi-processor reduction machine for the parallel evaluation CF applicative languages , 1981, FPCA '81.

[15]  Bernd Freisleben,et al.  Automated Transformation of Sequential Divide-And-Conquer Algorithms into Parallel Programs , 1995, Comput. Artif. Intell..

[16]  Edsger W. Dijkstra,et al.  Solution of a problem in concurrent programming control , 1965, CACM.

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

[18]  Robert D. Blumofe,et al.  Adaptive and Reliable ParallelComputing9 Networks of Workstations , 1997 .

[19]  Tim Brecht,et al.  Ajents: towards an environment for parallel, distributed and mobile Java applications , 1999, JAVA '99.

[20]  Martin C. Rinard,et al.  Automatic parallelization of divide and conquer algorithms , 1999, PPoPP '99.

[21]  Jim Waldo Remote procedure calls and Java Remote Method Invocation , 1998, IEEE Concurr..

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

[23]  JavaPascale Launay,et al.  The Do ! project : distributed programming using , 1998 .

[24]  Edsger W. Dijkstra,et al.  Solution of a problem in concurrent programming control , 1965, CACM.

[25]  Doug Lea,et al.  A Java fork/join framework , 2000, JAVA '00.

[26]  Satoshi Hirano,et al.  Bayanihan: building and studying web-based volunteer computing systems using Java , 1999, Future Gener. Comput. Syst..