Hybrid Analysis: Static & Dynamic Memory Reference Analysis

We present a novel Hybrid Analysis technology which can efficiently and seamlessly integrate all static and run-time analysis of memory references into a single framework that is capable of performing all data dependence analysis and can generate necessary information for most associated memory related optimizations. We use HA to perform automatic parallelization by extracting run-time assertions from any loop and generating appropriate run-time tests that range from a low cost scalar comparison to a full, reference by reference run-time analysis. Moreover we can order the run-time tests in increasing order of complexity (overhead) and thus risk the minimum necessary overhead. We accomplish this by both extending compile time IP analysis techniques and by incorporating speculative run-time techniques when necessary. Our solution is to bridge “free” compile time techniques with exhaustive run-time techniques through a continuum of simple to complex solutions. We have implemented our framework in the Polaris compiler by introducing an innovative intermediate representation called RT_LMAD and a run-time library that can operate on it. Based on the experimental results obtained to date we hope to automatically parallelize most and possibly all PERFECT codes, a significant accomplishment.

[1]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[2]  Lawrence Rauchwerger,et al.  Speculative Parallelization of Partially Parallel Loops , 2000, LCR.

[3]  Vivek Sarkar,et al.  Compact representations for control dependence , 1990, PLDI '90.

[4]  THOMAS BALL What ’ s in a Region ?-or-Computing Control Dependence Regions in Linear Time and Space , 1992 .

[5]  Martin C. Rinard,et al.  Symbolic bounds analysis of pointers, array indices, and accessed memory regions , 2005, TOPL.

[6]  Jay Hoeflinger,et al.  Interprocedural parallelization using memory classification analysis , 1998 .

[7]  Mary Hall Managing interprocedural optimization , 1992 .

[8]  François Irigoin,et al.  Interprocedural Array Region Analyses , 1996, International Journal of Parallel Programming.

[9]  Joel H. Saltz,et al.  Run-time parallelization and scheduling of loops , 1989, SPAA '89.

[10]  David A. Padua,et al.  Compiler analysis of irregular memory accesses , 2000, PLDI '00.

[11]  Ken Kennedy,et al.  The ParaScope parallel programming environment , 1993, Proc. IEEE.

[12]  Yunheung Paek,et al.  Advanced Program Restructuring for High-Performance Computers with Polaris , 2000 .

[13]  Sungdo Moon,et al.  Predicated array data-flow analysis for run-time parallelization , 1998, ICS '98.

[14]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[15]  Lawrence Rauchwerger,et al.  Hybrid analysis: static & dynamic memory reference analysis , 2002, ICS '02.

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

[17]  Jens Knoop,et al.  Optimal Interprocedural Program Optimization , 2000, Lecture Notes in Computer Science.

[18]  Jens Knoop Optimal Interprocedural Program Optimization: A New Framework and Its Application , 1999 .

[19]  L. Rauchwerger,et al.  The LRPD Test: Speculative Run-Time Parallelization of Loops with Privatization and Reduction Parallelization , 1999, IEEE Trans. Parallel Distributed Syst..

[20]  Yunheung Paek,et al.  Simplification of array access patterns for compiler optimizations , 1998, PLDI.

[21]  Nancy M. Amato,et al.  Run-time methods for parallelizing partially parallel loops , 1995, ICS '95.

[22]  Mark N. Wegman,et al.  An efficient method of computing static single assignment form , 1989, POPL '89.

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

[24]  Lawrence Rauchwerger,et al.  The R-LRPD test: speculative parallelization of partially parallel loops , 2002, Proceedings 16th International Parallel and Distributed Processing Symposium.

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

[26]  Constantine D. Polychronopoulos,et al.  Symbolic Analysis: A Basis for Parallelization, Optimization, and Scheduling of Programs , 1993, LCPC.

[27]  Lawrence Rauchwerger,et al.  Principles of Speculative Run-Time Parallelization , 1998, LCPC.

[28]  Amer Diwan,et al.  SUIF Explorer: an interactive and interprocedural parallelizer , 1999, PPoPP '99.

[29]  Lawrence Rauchwerger,et al.  Techniques for Reducing the Overhead of Run-Time Parallelization , 2000, CC.