Parallel Pointer Analysis with CFL-Reachability

This paper presents the first parallel implementation of pointer analysis with Context-Free Language (CFL) reachability, an important foundation for supporting demand queries in compiler optimisation and software engineering. Formulated as a graph traversal problem (often with context- and field-sensitivity for desired precision) and driven by queries (issued often in batch mode), this analysis is non-trivial to parallelise. We introduce a parallel solution to the CFL-reachability-based pointer analysis, with context- and field-sensitivity. We exploit its inherent parallelism by avoiding redundant graph traversals with two novel techniques, data sharing and query scheduling. With data sharing, paths discovered in answering a query are recorded as shortcuts so that subsequent queries will take the shortcuts instead of re-traversing its associated paths. With query scheduling, queries are prioritised according to their statically estimated dependences so that more redundant traversals can be further avoided. Evaluated using a set of 20 Java programs, our parallel implementation of CFL-reachability-based pointer analysis achieves an average speedup of 16.2X over a state-of-the-art sequential implementation on 16 CPU cores.

[1]  Jingling Xue,et al.  On-demand dynamic summary-based points-to analysis , 2012, CGO '12.

[2]  Thomas W. Reps,et al.  Program analysis via graph reachability , 1997, Inf. Softw. Technol..

[3]  Jingling Xue,et al.  Detecting Memory Leaks Statically with Full-Sparse Value-Flow Analysis , 2014, IEEE Transactions on Software Engineering.

[4]  Manu Sridharan,et al.  Refinement-based context-sensitive points-to analysis for Java , 2006, PLDI '06.

[5]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[6]  Jingling Xue,et al.  Accelerating inclusion-based pointer analysis on heterogeneous CPU-GPU systems , 2013, 20th Annual International Conference on High Performance Computing.

[7]  Xin Zheng,et al.  Demand-driven alias analysis for C , 2008, POPL '08.

[8]  Kunle Olukotun,et al.  Efficient Parallel Graph Exploration on Multi-Core CPU and GPU , 2011, 2011 International Conference on Parallel Architectures and Compilation Techniques.

[9]  José Nelson Amaral,et al.  A Parallel External-Memory Frontier Breadth-First Traversal Algorithm for Clusters of Workstations , 2006, 2006 International Conference on Parallel Processing (ICPP'06).

[10]  Matthew Might,et al.  EigenCFA: accelerating flow analysis with GPUs , 2011, POPL '11.

[11]  Jingling Xue,et al.  Static memory leak detection using full-sparse value-flow analysis , 2012, ISSTA 2012.

[12]  Yi Lu,et al.  Fast and precise points-to analysis with incremental CFL-reachability summarisation: preliminary experience , 2012, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

[13]  Manu Sridharan,et al.  Demand-driven points-to analysis for Java , 2005, OOPSLA '05.

[14]  Welf Löwe,et al.  Parallel points-to analysis for multi-core machines , 2011, HiPEAC.

[15]  Atanas Rountev,et al.  Demand-driven context-sensitive alias analysis for Java , 2011, ISSTA '11.

[16]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[17]  José Nelson Amaral,et al.  Sequential and Parallel Algorithms for Frontier A* with Delayed Duplicate Detection , 2006, AAAI.

[18]  R. Govindarajan,et al.  Parallel flow-sensitive pointer analysis by graph-rewriting , 2013, Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques.

[19]  Keshav Pingali,et al.  Parallel inclusion-based points-to analysis , 2010, OOPSLA.

[20]  Jingling Xue,et al.  Query-directed adaptive heap cloning for optimizing compilers , 2013, Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).

[21]  David A. Bader,et al.  Scalable Graph Exploration on Multicore Processors , 2010, 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis.

[22]  Yi Lu,et al.  An Incremental Points-to Analysis with CFL-Reachability , 2013, CC.

[23]  Rupesh Nasre,et al.  Time- and space-efficient flow-sensitive points-to analysis , 2013, ACM Trans. Archit. Code Optim..

[24]  Keshav Pingali,et al.  A GPU implementation of inclusion-based points-to analysis , 2012, PPoPP '12.

[25]  Ondrej Lhoták,et al.  Context-Sensitive Points-to Analysis: Is It Worth It? , 2006, CC.

[26]  Manu Sridharan,et al.  Scaling CFL-Reachability-Based Points-To Analysis Using Context-Sensitive Must-Not-Alias Analysis , 2009, ECOOP.

[27]  Rupesh Nasre,et al.  Parallel Replication-Based Points-To Analysis , 2012, CC.