Run-Time Support for the Automatic Parallelization of Java Programs

We describe and evaluate a novel approach for the automatic parallelization of programs that use pointer-based dynamic data structures, written in Java. The approach exploits parallelism among methods by creating an asynchronous thread of execution for each method invocation in a program. At compile time, methods are analyzed to determine the data they access, parameterized by their context. A description of these data accesses is transmitted to a run-time system during program execution. The run-time system utilizes this description to determine when a thread may execute, and to enforce dependences among threads. This run-time system is the main focus of this paper. More specifically, the paper details the representation of data accesses in a method and the framework used by the run-time system to detect and enforce dependences among threads. Experimental evaluation of an implementation of the run-time system on a four-processor Sun multiprocessor indicates that close to ideal speedup can be obtained for a number of benchmarks. This validates our approach.

[1]  Wen-mei W. Hwu,et al.  Modular interprocedural pointer analysis using access paths: design, implementation, and evaluation , 2000, PLDI '00.

[2]  Susan J. Eggers,et al.  Exploiting thread-level parallelism on simultaneous multithreaded processors , 1998 .

[3]  Rudolf Eigenmann,et al.  Automatic program parallelization , 1993, Proc. IEEE.

[4]  Urs Hölzle,et al.  Removing unnecessary synchronization in Java , 1999, OOPSLA '99.

[5]  William Landi,et al.  Undecidability of static analysis , 1992, LOPL.

[6]  Monica S. Lam,et al.  Maximizing Multiprocessor Performance with the SUIF Compiler , 1996, Digit. Tech. J..

[7]  Benjamin Goldberg,et al.  Escape analysis on lists , 1992, PLDI '92.

[8]  Keith H. Randall,et al.  Cilk: efficient multithreaded computing , 1998 .

[9]  John Zahorjan,et al.  Improving the performance of runtime parallelization , 1993, PPOPP '93.

[10]  Hesham El-Rewini,et al.  Introduction to Parallel Computing , 1992 .

[11]  Patrick Chan,et al.  The Java Class Libraries: Supplement for the Java 2 Platform , 1999 .

[12]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

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

[14]  James R. Larus,et al.  Detecting conflicts between structure accesses , 1988, PLDI '88.

[15]  William L. M. Hui Visualizing object-method granularity for program parallelization , 1998 .

[16]  Bruno Blanchet,et al.  Escape analysis for object-oriented languages: application to Java , 1999, OOPSLA '99.

[17]  Laurie J. Hendren,et al.  Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C , 1996, POPL '96.

[18]  Jong-Deok Choi,et al.  Escape analysis for Java , 1999, OOPSLA '99.

[19]  Monica S. Lam,et al.  Coarse-grain parallel programming in Jade , 1991, PPOPP '91.

[20]  A. Karimi,et al.  Master‟s thesis , 2011 .

[21]  Tarek S. Abdelrahman,et al.  Exploiting Task-Level Parallelism Using pTask , 1996, PDPTA.

[22]  Dean M. Tullsen,et al.  Simultaneous multithreading: Maximizing on-chip parallelism , 1995, Proceedings 22nd Annual International Symposium on Computer Architecture.

[23]  Simon L. Peyton Jones,et al.  Haskell 98 Libraries: Random Numbers , 2003, J. Funct. Program..

[24]  Paul Feautrier,et al.  Direct parallelization of call statements , 1986, SIGPLAN '86.

[25]  Arie Shoshani,et al.  System Deadlocks , 1971, CSUR.

[26]  R. Lathe Phd by thesis , 1988, Nature.

[27]  David Callahan,et al.  A future-based parallel language for a general-purpose highly-parallel computer , 1990 .

[28]  P. Geoffrey Lowney,et al.  Feedback directed optimization in Compaq's compilation tools for Alpha , 1999 .

[29]  Martin C. Rinard,et al.  Compositional pointer and escape analysis for Java programs , 1999, OOPSLA '99.

[30]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

[31]  Samuel B. Williams,et al.  ASSOCIATION FOR COMPUTING MACHINERY , 2000 .

[32]  David R. Jefferson,et al.  Virtual time , 1985, ICPP.

[33]  Tarek S. Abdelrahman,et al.  Exploiting Task-Level Parallelism Automatically Using pTask , 2002 .

[34]  Bruno Blanchet,et al.  Escape analysis: correctness proof, implementation and experimental results , 1998, POPL '98.

[35]  Chuan-Qi Zhu,et al.  A Scheme to Enforce Data Dependence on Large Multiprocessor Systems , 1987, IEEE Transactions on Software Engineering.

[36]  S. Crawford,et al.  Volume 1 , 2012, Journal of Diabetes Investigation.

[37]  Josep Torrellas,et al.  An efficient algorithm for the run-time parallelization of DOACROSS loops , 1994, Proceedings of Supercomputing '94.

[38]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[39]  G. Ramalingam,et al.  The undecidability of aliasing , 1994, TOPL.

[40]  Milind Girkar,et al.  Extracting task-level parallelism , 1995, TOPL.

[41]  D. Marr,et al.  Hyper-Threading Technology Architecture and MIcroarchitecture , 2002 .

[42]  Laurie J. Hendren,et al.  Putting pointer analysis to work , 1998, POPL '98.

[43]  John G. Cleary,et al.  Block Based Execution and Task Level Parallelism , 1998 .

[44]  Alain Deutsch,et al.  Interprocedural may-alias analysis for pointers: beyond k-limiting , 1994, PLDI '94.

[45]  Michael Hind,et al.  Evaluating the effectiveness of pointer alias analyses , 2001, Sci. Comput. Program..

[46]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[47]  Richard C. Holt,et al.  The Geneva convention on the treatment of object aliasing , 1992, OOPS.

[48]  P. Sadayappan,et al.  An approach to synchronization for parallel computing , 1988, ICS '88.

[49]  Joel H. Saltz,et al.  Run-Time Parallelization and Scheduling of Loops , 1991, IEEE Trans. Computers.

[50]  Patrick Chan,et al.  The Java Class Libraries, Second Edition, Volume 2 , 1998 .

[51]  Thomas R. Gross,et al.  Task Parallelism in a High Performance Fortran Framework , 1994, IEEE Parallel & Distributed Technology: Systems & Applications.

[52]  Matteo Frigo,et al.  The implementation of the Cilk-5 multithreaded language , 1998, PLDI.

[53]  Gurindar S. Sohi,et al.  Speculative Multithreaded Processors , 2001, Computer.

[54]  Patrick Chan,et al.  The Java class libraries , 1998 .

[55]  Mary Beth Rosson,et al.  Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications , 2000, Conference on Object-Oriented Programming Systems, Languages, and Applications.

[56]  Daniel P. Friedman,et al.  Aspects of Applicative Programming for Parallel Processing , 1978, IEEE Transactions on Computers.

[57]  Kunle Olukotun,et al.  A Single-Chip Multiprocessor , 1997, Computer.

[58]  Yunheung Paek,et al.  Parallel Programming with Polaris , 1996, Computer.

[59]  David A. Padua,et al.  Compiler Algorithms for Synchronization , 1987, IEEE Transactions on Computers.