On the Automatic Detection of Heap-Induced Data Dependencies with Interprocedural Shape Analysis

The automatic detection of heap-induced data dependencies is major challenge for current parallelizing compilers. Currently, optimizing compilers lack enough context to expose parallelism in scientific codes that make use of dynamic data structures, those allocated at runtime and stored in the heap. Traditionally, it is believed that few static assumptions can be made of runtime structures, and those that can be made are usually not useful enough for aggressive optimization. However, we show in this paper that a precise underlying shape analysis technique, which accurately captures the shape of data structures at compile-time, can provide sufficient information to identify independent heap accesses in challenging benchmarks. The result is that hard-to-find parallelism, unknown to current parallelizing compilers, is exposed and exploited thanks to our technique.

[1]  Eran Yahav,et al.  Interprocedural Shape Analysis for Cutpoint-Free Programs , 2005, SAS.

[2]  Laurie J. Hendren,et al.  Detecting Parallelism in C Programs with Recursive Darta Structures , 1998, CC.

[3]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[4]  Joel H. Saltz,et al.  Identifying DEF/USE Information of Statements that Construct and Traverse Dynamic Recursive Data Structures , 1997, LCPC.

[5]  Bertrand Jeannet,et al.  A relational approach to interprocedural shape analysis , 2004, TOPL.

[6]  Rudolf Eigenmann,et al.  Cetus - An Extensible Compiler Infrastructure for Source-to-Source Transformation , 2003, LCPC.

[7]  Rafael Asenjo,et al.  A novel approach for detecting heap-based loop-carried dependences , 2005, 2005 International Conference on Parallel Processing (ICPP'05).

[8]  Radu Rugina,et al.  Region-based shape analysis with tracked locations , 2005, POPL '05.

[9]  Peter W. O'Hearn,et al.  Shape Analysis for Composite Data Structures , 2007, CAV.

[10]  Anne Rogers,et al.  Software caching and computation migration in Olden , 1995, PPOPP '95.

[11]  Ken Kennedy,et al.  Procedure cloning , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[12]  Alexey Gotsman,et al.  Interprocedural Shape Analysis with Separated Heap Abstractions , 2006, SAS.

[13]  Rafael Asenjo,et al.  Complete Def-Use Analysis in Recursive Programs with Dynamic Data Structures , 2008, Euro-Par Workshops.

[14]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[15]  Joel H. Saltz,et al.  Identifying parallelism in programs with cyclic graphs , 2000, Proceedings 2000 International Conference on Parallel Processing.

[16]  Rafael Asenjo,et al.  Parallelizing irregular C codes assisted by interprocedural shape analysis , 2008, 2008 IEEE International Symposium on Parallel and Distributed Processing.

[17]  Deepak Kapur,et al.  Identification of Heap-Carried Data Dependence Via Explicit Store Heap Models , 2008, LCPC.

[18]  Alexandru Salcianu,et al.  Pointer analysis for Java programs: novel techniques and applications , 2006 .

[19]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .