The order in which the statements of a program are executed can affect the execution time of the program. Optimizing compilers have made use of this fact by reordering code to improve its performance on a machine. Some statement orderings are essential to a program's results, however; these orderings form the basis of a dependence relation among the statements of a program.
Dependences can arise in two separate ways within a program: from data considerations, and from control considerations. However, since all control dependences can be converted to data dependences by guarding statements with precise conditions that control their execution, data dependence is the more general concept.
Data dependences within loops can arise from two separate effects. The position of statements within the loops may cause a dependence, or iteration of a specific loop may cause a dependence. Characterizing dependence in this manner provides the foundation of extremely effective algorithms for reordering transformations. One very important reordering transformation which is made possible by dependence is vectorization.
Vectorization of a program can often be enchanced by loop interchange. Dependence plays an important role in determining when loops should be interchanged. Interchange preventing dependences inhibit a particular interchange; interchange sensitive dependences may make an interchange less profitable in terms of increased vectorization.
Dependence for symbolic subscripts is an extremely difficult problem. Nevertheless, some cases can be handled by techniques based on standard dependence tests.
One last reordering transformation which is of extreme importance on vector machines is sectioning, or devectorization. Dependence not only determines when a statement can be correctly sectioned but it also can be used to improve the register performance of a sectioned statement.
Cited By
- Ebcioglu K and San I (2022). Highly Parallel Multi-FPGA System Compilation from Sequential C/C++ Code in the AWS Cloud, ACM Transactions on Reconfigurable Technology and Systems, 15:4, (1-42), Online publication date: 31-Dec-2022.
- Zhao J and Zhao R (2018). K-DT, The Journal of Supercomputing, 74:4, (1655-1675), Online publication date: 1-Apr-2018.
- Rietveld K and Wijshoff H (2015). Reducing Layered Database Applications to their Essence through Vertical Integration, ACM Transactions on Database Systems (TODS), 40:3, (1-39), Online publication date: 23-Oct-2015.
- Yang X, Zhang Y, Lu X, Xue J, Rogers I, Li G, Wang G and Fang X (2008). Exploiting the reuse supplied by loop-dependent stream references for stream processors, ACM Transactions on Architecture and Code Optimization (TACO), 7:2, (1-35), Online publication date: 1-Sep-2010.
- Yang X, Zhang Y, Xue J, Rogers I, Li G and Wang G Exploiting loop-dependent stream reuse for stream processors Proceedings of the 17th international conference on Parallel architectures and compilation techniques, (22-31)
- Zhao Y and Kennedy K Dependence-based code generation for a CELL processor Proceedings of the 19th international conference on Languages and compilers for parallel computing, (64-79)
- Zhao Y and Kennedy K (2005). Scalarization using loop alignment and loop skewing, The Journal of Supercomputing, 31:1, (5-46), Online publication date: 1-Jan-2005.
- Allen R and Kennedy K (2004). Automatic loop interchange, ACM SIGPLAN Notices, 39:4, (75-90), Online publication date: 1-Apr-2004.
- Burke M and Cytron R (2004). Interprocedural dependence analysis and parallelization, ACM SIGPLAN Notices, 39:4, (139-154), Online publication date: 1-Apr-2004.
- Kennedy K (2019). Fast Greedy Weighted Fusion, International Journal of Parallel Programming, 29:5, (463-491), Online publication date: 1-Oct-2001.
- Kennedy K Fast greedy weighted fusion Proceedings of the 14th international conference on Supercomputing, (131-140)
- Megiddo N and Sarkar V Optimal weighted loop fusion for parallel programs Proceedings of the ninth annual ACM symposium on Parallel algorithms and architectures, (282-291)
- Park S and Koo M Detection of Implicit Parallelisms in the Task Parallel Language Proceedings of the High-Performance Computing on the Information Superhighway, HPC-Asia '97
- Petersen P and Padua D (1996). Static and Dynamic Evaluation of Data Dependence Analysis Techniques, IEEE Transactions on Parallel and Distributed Systems, 7:11, (1121-1132), Online publication date: 1-Nov-1996.
- Saavedra-Barrera R, Mao W, Park D, Chame J and Moon S The Combined Effectiveness of Unimodular Transformations, Tiling, and Software Prefetching Proceedings of the 10th International Parallel Processing Symposium, (39-45)
- Su B, Habib S, Zhao W, Wang J and Wu Y A study of pointer aliasing for software pipelining using run-time disambiguation Proceedings of the 27th annual international symposium on Microarchitecture, (112-117)
- Psarris K, Kong X and Klappholz D (2019). The Direction Vector I Test, IEEE Transactions on Parallel and Distributed Systems, 4:11, (1280-1290), Online publication date: 1-Nov-1993.
- Allen R and Kennedy K (2019). Vector Register Allocation, IEEE Transactions on Computers, 41:10, (1290-1317), Online publication date: 1-Oct-1992.
- Girkar M and Polychronopoulos C (2019). Automatic Extraction of Functional Parallelism from Ordinary Programs, IEEE Transactions on Parallel and Distributed Systems, 3:2, (166-178), Online publication date: 1-Mar-1992.
- Pugh W (1992). A practical algorithm for exact array dependence analysis, Communications of the ACM, 35:8, (102-114), Online publication date: 1-Aug-1992.
- Horwitz S and Reps T The use of program dependence graphs in software engineering Proceedings of the 14th international conference on Software engineering, (392-411)
- Sarkar V and Thekkath R A general framework for iteration-reordering loop transformations Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation, (175-187)
- Sarkar V and Thekkath R (1992). A general framework for iteration-reordering loop transformations, ACM SIGPLAN Notices, 27:7, (175-187), Online publication date: 1-Jul-1992.
- Chen W, Mahlke S, Hwu W, Kiyohara T and Chang P Tolerating data access latency with register preloading Proceedings of the 6th international conference on Supercomputing, (104-113)
- Psarris K On exact data dependence analysis Proceedings of the 6th international conference on Supercomputing, (303-312)
- Kennedy K, McKinley K and Tseng C (2019). Interactive Parallel Programming using the ParaScope Editor, IEEE Transactions on Parallel and Distributed Systems, 2:3, (329-341), Online publication date: 1-Jul-1991.
- Kong X, Klappholz D and Psarris K (2019). The I Test, IEEE Transactions on Parallel and Distributed Systems, 2:3, (342-349), Online publication date: 1-Jul-1991.
- Koelbel C and Mehrotra P (2019). Compiling Global Name-Space Parallel Loops for Distributed Execution, IEEE Transactions on Parallel and Distributed Systems, 2:4, (440-451), Online publication date: 1-Oct-1991.
- Sarkar V and Gao G Optimization of array accesses by collective loop transformations Proceedings of the 5th international conference on Supercomputing, (194-205)
- Psarris K, Kong X and Klappholz D Extending the I test to direction vectors Proceedings of the 5th international conference on Supercomputing, (330-340)
- Kennedy K, McKinley K and Tseng C Analysis and transformation in the ParaScope editor Proceedings of the 5th international conference on Supercomputing, (433-447)
- Lu L A unified framework for systematic loop transformations Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming, (28-38)
- Lu L (1991). A unified framework for systematic loop transformations, ACM SIGPLAN Notices, 26:7, (28-38), Online publication date: 1-Jul-1991.
- Goff G, Kennedy K and Tseng C Practical dependence testing Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation, (15-29)
- Goff G, Kennedy K and Tseng C (1991). Practical dependence testing, ACM SIGPLAN Notices, 26:6, (15-29), Online publication date: 1-Jun-1991.
- Pugh W The Omega test: a fast and practical integer programming algorithm for dependence analysis Proceedings of the 1991 ACM/IEEE conference on Supercomputing, (4-13)
- Ramanujam J and Sadayappan P Tiling multidimensional iteration spaces for nonshared memory machines Proceedings of the 1991 ACM/IEEE conference on Supercomputing, (111-120)
- Li Z, Yew P and Zhu C (2019). An Efficient Data Dependence Analysis for Parallelizing Compilers, IEEE Transactions on Parallel and Distributed Systems, 1:1, (26-34), Online publication date: 1-Jan-1990.
- Shen Z, Li Z and Yew P (1990). An Empirical Study of Fortran Programs for Parallelizing Compilers, IEEE Transactions on Parallel and Distributed Systems, 1:3, (356-364), Online publication date: 1-Jul-1990.
- Klappholz D, Psarris K and Kong X (1990). On the perfect accuracy of an approximate subscript analysis test, ACM SIGARCH Computer Architecture News, 18:3b, (201-212), Online publication date: 1-Sep-1990.
- Smith K, Appelbe B and Stirewalt K (1990). Incremental dependence analysis for interactive parallelization, ACM SIGARCH Computer Architecture News, 18:3b, (330-341), Online publication date: 1-Sep-1990.
- Klappholz D, Psarris K and Kong X On the perfect accuracy of an approximate subscript analysis test Proceedings of the 4th international conference on Supercomputing, (201-212)
- Smith K, Appelbe B and Stirewalt K Incremental dependence analysis for interactive parallelization Proceedings of the 4th international conference on Supercomputing, (330-341)
- Kennedy K and McKinley K Loop distribution with arbitrary control flow Proceedings of the 1990 ACM/IEEE conference on Supercomputing, (407-416)
- Lu L and Chen M Subdomain dependence test for massive parallelism Proceedings of the 1990 ACM/IEEE conference on Supercomputing, (962-972)
- Koblenz B and Noyce W Constraint based vectorization Proceedings of the 3rd international conference on Supercomputing, (195-204)
- Li Z, Yew P and Zhu C Data dependence analysis on multi-dimensional array references Proceedings of the 3rd international conference on Supercomputing, (215-224)
- Dehnert J, Hsu P and Bratt J (1989). Overlapped loop support in the Cydra 5, ACM SIGARCH Computer Architecture News, 17:2, (26-38), Online publication date: 1-Apr-1989.
- Dehnert J, Hsu P and Bratt J Overlapped loop support in the Cydra 5 Proceedings of the third international conference on Architectural support for programming languages and operating systems, (26-38)
- Horwitz S, Pfeiffer P and Reps T Dependence analysis for pointer variables Proceedings of the ACM SIGPLAN 1989 conference on Programming language design and implementation, (28-40)
- Chi C and Dietz H Unified management of registers and cache using liveness and cache bypass Proceedings of the ACM SIGPLAN 1989 conference on Programming language design and implementation, (344-353)
- Horwitz S, Pfeiffer P and Reps T (2019). Dependence analysis for pointer variables, ACM SIGPLAN Notices, 24:7, (28-40), Online publication date: 1-Jul-1989.
- Chi C and Dietz H (2019). Unified management of registers and cache using liveness and cache bypass, ACM SIGPLAN Notices, 24:7, (344-353), Online publication date: 1-Jul-1989.
- Baxter W and Bauer H The program dependence graph and vectorization Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (1-11)
- Arafeh B Interactive loop interchanging Proceedings of the 17th conference on ACM Annual Computer Science Conference, (418-418)
- Balasundaram V, Kennedy K, Kremer U, McKinley K and Subhlok J The parascope editor: an interactive parallel programming tool Proceedings of the 1989 ACM/IEEE conference on Supercomputing, (540-550)
- Klappholz D, Kong X and Kalis A Refined Fortran: an update Proceedings of the 1989 ACM/IEEE conference on Supercomputing, (607-615)
- Wu Y and Lewis T Parallel processor balance through loop spreading Proceedings of the 1989 ACM/IEEE conference on Supercomputing, (665-674)
- Allen R and Johnson S Compiling C for vectorization, parallelization, and inline expansion Proceedings of the ACM SIGPLAN 1988 conference on Programming language design and implementation, (241-249)
- Bose P Interactive program improvement via EAVE: an expert adviser for vectorization Proceedings of the 2nd international conference on Supercomputing, (119-130)
- Allen F, Burke M, Cytron R, Ferrante J and Hsieh W A framework for determining useful parallelism Proceedings of the 2nd international conference on Supercomputing, (207-215)
- Lichnewsky A and Thomasset F Introducing symbolic problem solving techniques in the dependence testing phases of a vectorizer Proceedings of the 2nd international conference on Supercomputing, (396-406)
- Wallace D Dependence of multi-dimensional array references Proceedings of the 2nd international conference on Supercomputing, (418-428)
- Albert E, Knobe K, Lukas J and Steele G Compiling Fortran 8x array features for the connection machine computer system Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems, (42-56)
- Burke M, Cytron R, Ferrante J, Hsieh W, Sarkar V and Shields D Automatic discovery of parallelism: a tool and an experiment (extended abstract) Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems, (77-84)
- Li Z and Yew P Efficient interprocedural analysis for program parallelization and restructuring Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems, (85-99)
- Albert E, Knobe K, Lukas J and Steele G (2019). Compiling Fortran 8x array features for the connection machine computer system, ACM SIGPLAN Notices, 23:9, (42-56), Online publication date: 1-Sep-1988.
- Burke M, Cytron R, Ferrante J, Hsieh W, Sarkar V and Shields D (1988). Automatic discovery of parallelism: a tool and an experiment (extended abstract), ACM SIGPLAN Notices, 23:9, (77-84), Online publication date: 1-Sep-1988.
- Li Z and Yew P (2019). Efficient interprocedural analysis for program parallelization and restructuring, ACM SIGPLAN Notices, 23:9, (85-99), Online publication date: 1-Sep-1988.
- Horwitz S, Prins J and Reps T On the adequacy of program dependence graphs for representing programs Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (146-157)
- Allen R and Johnson S (1988). Compiling C for vectorization, parallelization, and inline expansion, ACM SIGPLAN Notices, 23:7, (241-249), Online publication date: 1-Jul-1988.
- Chastain M, Gostin G, Mankovich J and Wallach S The convex C240 architecture Proceedings of the 1988 ACM/IEEE conference on Supercomputing, (321-329)
- Dietz H and Chi C CRegs: a new kind of memory for referencing arrays and pointers Proceedings of the 1988 ACM/IEEE conference on Supercomputing, (360-367)
- Arafeh B Vectorization and parallelization interactive assistant Proceedings of the 1988 ACM sixteenth annual conference on Computer science, (573-577)
- Allen r, Callahan D and Kennedy K Automatic decomposition of scientific programs for parallel execution Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (63-76)
- Burke M and Cytron R Interprocedural dependence analysis and parallelization Proceedings of the 1986 SIGPLAN symposium on Compiler construction, (162-175)
- Burke M and Cytron R (2019). Interprocedural dependence analysis and parallelization, ACM SIGPLAN Notices, 21:7, (162-175), Online publication date: 1-Jul-1986.
- Cytron R, Lowry A and Zadeck F Code motion of control structures in high-level languages Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (70-85)
- Ottenstein K and Ottenstein L (1984). The program dependence graph in a software development environment, ACM SIGSOFT Software Engineering Notes, 9:3, (177-184), Online publication date: 1-May-1984.
- Ottenstein K and Ottenstein L (1984). The program dependence graph in a software development environment, ACM SIGPLAN Notices, 19:5, (177-184), Online publication date: 1-May-1984.
- Allen J and Kennedy K Automatic loop interchange Proceedings of the 1984 SIGPLAN symposium on Compiler construction, (233-246)
- Allen J and Kennedy K (1984). Automatic loop interchange, ACM SIGPLAN Notices, 19:6, (233-246), Online publication date: 1-Jun-1984.
- Warren J A hierarchical basis for reordering transformations Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (272-282)
- Ottenstein K and Ottenstein L The program dependence graph in a software development environment Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments, (177-184)
- Goldberg A and Paige R Stream processing Proceedings of the 1984 ACM Symposium on LISP and functional programming, (53-62)
Recommendations
Fast condensation of the program dependence graph
PLDI '13Aggressive 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 ...
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 ...
Recurrence Analysis for Automatic Parallelization of Subscripted Subscripts
PPoPP '24: Proceedings of the 29th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel ProgrammingIntroducing correct and optimal OpenMP parallelization directives in applications is a challenge. To parallelize a loop in an input application code automatically, parallelizing compilers need to disprove dependences with respect to variables across ...