Abstract
Aggressive compiler optimizations are formulated around the Program Dependence Graph (PDG). Many techniques, including loop fission and parallelization are concerned primarily with dependence cycles in the PDG. The Directed Acyclic Graph of Strongly Connected Components (DAGSCC) represents these cycles directly. The naive method to construct the DAGSCC first computes the full PDG. This approach limits adoption of aggressive optimizations because the number of analysis queries grows quadratically with program size, making DAGSCC construction expensive. Consequently, compilers optimize small scopes with weaker but faster analyses.
We observe that many PDG edges do not affect the DAGSCC and that ignoring them cannot affect clients of the DAGSCC. Exploiting this insight, we present an algorithm to omit those analysis queries to compute the DAGSCC efficiently. Across 366 hot loops from 20 SPEC2006 benchmarks, this method computes the DAGSCC in half of the time using half as many queries.
- R. Allen and S. Johnson. Compiling C for vectorization, parallelization, and inline expansion. In Proceedings of the ACM SIGPLAN 1988 Conference on Programming Language Design and Implementation (PLDI), pages 241--249, June 1988. Google Scholar
Digital Library
- U. Banerjee. Loop Transformations for Restructuring Compilers: The Foundations. Kluwer Academic Publishers, Norwell, MA, 1993. Google Scholar
Digital Library
- T. Chen, J. Lin, W. Hsu, and P. Yew. An empirical study on the granularity of pointer analysis in C programs. Languages and Compilers for Parallel Computing (LCPC), pages 157--171, 2005. Google Scholar
Digital Library
- R. Cytron. DOACROSS: Beyond vectorization for multiprocessors. In Proceedings of the 1986 International Conference on Parallel Processing (ICPP), pages 836--884, 1986.Google Scholar
- E. Duesterwald, R. Gupta, and M. L. Soffa. Reducing the cost of data flow analysis by congruence partitioning. In In International Conference on Compiler Construction, pages 357--373. Springer-Verlag, 1994. Google Scholar
Digital Library
- J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems, 9:319--349, July 1987. Google Scholar
Digital Library
- J. S. Foster, M. Fähndrich, and A. Aiken. Polymorphic versus monomorphic flow-insensitive points-to analysis for C. In Proceedings of the 7th International Symposium on Static Analysis (SAS), pages 175--198, London, UK, UK, 2000. Springer-Verlag. Google Scholar
Digital Library
- R. Ghiya, D. Lavery, and D. Sehr. On the importance of points-to analysis and other memory disambiguation methods for C programs. In Proceedings of the ACM SIGPLAN 2001 Conference on Programming Language Design and Implementation (PLDI), pages 47--58. ACM Press, 2001. Google Scholar
Digital Library
- B. Guo, M. J. Bridges, S. Triantafyllis, G. Ottoni, E. Raman, and D. I. August. Practical and accurate low-level pointer analysis. In Proceedings of the 3rd International Symposium on Code Generation and Optimization (CGO), March 2005. Google Scholar
Digital Library
- S. Z. Guyer and C. Lin. Client-driven pointer analysis. In In International Static Analysis Symposium, pages 214--236. Springer-Verlag, 2003. Google Scholar
Digital Library
- R. E. Hank,W.W. Hwu, and B. R. Rau. Region-based compilation: An introduction and motivation. In Proceedings of the 28th Annual International Symposium on Microarchitecture, pages 158--168, December 1995. Google Scholar
Digital Library
- M. J. Harrold, B. Malloy, and G. Rothermel. Efficient construction of Program Dependence Graphs. In Proceedings of the 1993 ACM SIGSOFT international symposium on Software testing and analysis (ISSTA), pages 160--170, New York, NY, 1993. Google Scholar
Digital Library
- N. Heintze and O. Tardieu. Demand-driven pointer analysis. In Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation (PLDI), pages 24--34, New York, NY, 2001. Google Scholar
Digital Library
- M. Hind. Pointer analysis: Haven't we solved this problem yet? In 2001 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE), 2001. Google Scholar
Digital Library
- M. Hind and A. Pioli. Evaluating the effectiveness of pointer alias analyses. In Science of Computer Programming, pages 31--55, 1999. Google Scholar
Digital Library
- S. Horwitz. Precise flow-insensitive may-alias analysis is NP-hard. ACM Transactions on Programming Languages and Systems, 19(1), January 1997. Google Scholar
Digital Library
- S. Horwitz and T. Reps. The use of program dependence graphs in software engineering. In In proceedings of the Fourtheenth International Conference on Software Engineering (CSE), pages 392--411, 1992. Google Scholar
Digital Library
- R. Johnson and K. Pingali. Dependence-based program analysis. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation (PLDI), pages 78--89, 1993. Google Scholar
Digital Library
- M. G. Kendall. Rank Correlation Methods. Charles Griffin and Company, Limited, London, 1948.Google Scholar
- K. Kennedy and J. R. Allen. Optimizing compilers for modern architectures: a dependence-based approach. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2002. Google Scholar
Digital Library
- C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of the Annual International Symposium on Code Generation and Optimization (CGO), pages 75--86, 2004. Google Scholar
Digital Library
- C. Lattner, A. Lenharth, and V. Adve. Making Context-Sensitive Points-to Analysis with Heap Cloning Practical For The Real World. In Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), San Diego, California, June 2007. Google Scholar
Digital Library
- P. Liang and M. Naik. Scaling abstraction refinement via pruning. In Proceedings of the 2011 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI). Google Scholar
Digital Library
- W. Liu, J. Tuck, L. Ceze, W. Ahn, K. Strauss, J. Renau, and J. Torrellas. POSH: a TLS compiler that exploits program structure. In PPoPP '06: Proceedings of the 11th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 158--167, 2006. Google Scholar
Digital Library
- R. Muth and S. Debray. Partial inlining. Technical report, Department of Computer Science, University of Arizona, 1997.Google Scholar
- R. Muth and S. Debray. On the complexity of flow-sensitive dataflow analyses. In In Proc. ACM Symp. on Principles of Programming Languages, pages 67--80. ACM Press, 2000. Google Scholar
Digital Library
- F. Ohata, A. Nishimatsu, and K. Inoue. Analyzing dependence locality for efficient construction of program dependence graph. Information and Software Technology, 42(13):935--946, 2000.Google Scholar
Cross Ref
- E. Raman, G. Ottoni, A. Raman, M. Bridges, and D. I. August. Parallel-stage decoupled software pipelining. In Proceedings of the Annual International Symposium on Code Generation and Optimization (CGO), 2008. Google Scholar
Digital Library
- R. Rangan, N. Vachharajani, M. Vachharajani, and D. I. August. Decoupled software pipelining with the synchronization array. In Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques (PACT), pages 177--188, September 2004. Google Scholar
Digital Library
- L. Rauchwerger and D. A. Padua. The LRPD test: Speculative runtime parallelization of loops with privatization and reduction parallelization. IEEE Transactions on Parallel Distributed Systems, 10:160--180, February 1999. Google Scholar
Digital Library
- Standard Performance Evaluation Corporation. http://www.spec.org.Google Scholar
- M. Sridharan, D. Gopan, L. Shan, and R. Bodík. Demand-driven points-to analysis for java. In Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA), pages 59--76, New York, NY, 2005. Google Scholar
Digital Library
- R. E. Tarjan. Depth-first search and linear graph algorithms. SIAM Journal on Computing, 1(2):146--160, 1972.Google Scholar
Digital Library
- A. J. Thadhani. Factors affecting programmer productivity during application development. IBM Systems Journal, 23(1):19--35, 1984. Google Scholar
Digital Library
- C. Tian, M. Feng, V. Nagarajan, and R. Gupta. Copy or discard execution model for speculative parallelization on multicores. In Proceedings of the 41st Annual IEEE/ACM International Symposium on Microarchitecture (MICRO), pages 330--341, Washington, DC, 2008. IEEE Computer Society. Google Scholar
Digital Library
- H. Vandierendonck, S. Rul, and K. De Bosschere. The Paralax infrastructure: Automatic parallelization with a helping hand. In Proceedings of the 19th International Conference on Parallel Architecture and Compilation Techniques (PACT), pages 389--400, 2010. Google Scholar
Digital Library
- M. Weiser. Program slicing. In Proceedings of the 5th international conference on Software engineering, (ICSE), pages 439--449, Piscataway, NJ, 1981. Google Scholar
Digital Library
- J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation, (PLDI), pages 131--144, New York, NY, 2004. Google Scholar
Digital Library
- The Wisconsin Program-Slicing Tool, Version 1.1, 2000. http://research.cs.wisc.edu/wpis/slicing tool/.Google Scholar
- X. Zheng and R. Rugina. Demand-driven alias analysis for C. In Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), pages 197--208, New York, NY, 2008. Google Scholar
Digital Library
Index Terms
Fast condensation of the program dependence graph
Recommendations
Fast condensation of the program dependence graph
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationAggressive compiler optimizations are formulated around the Program Dependence Graph (PDG). Many techniques, including loop fission and parallelization are concerned primarily with dependence cycles in the PDG. The Directed Acyclic Graph of Strongly ...
Tree dependence analysis
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationWe develop a new framework for analyzing recursive methods that perform traversals over trees, called tree dependence analysis. This analysis translates dependence analysis techniques for regular programs to the irregular space, identifying the ...
The program dependence graph and vectorization
POPL '89: Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languagesPrevious attempts at vectorizing programs written in a sequential high level language focused on converting control dependences to data dependences using a mechanism known as IF-conversion. After IF-conversion vector optimizations are performed on a ...







Comments