skip to main content
Dependence analysis for subscripted variables and its application to program transformations
Publisher:
  • Rice University
  • 6100 S. Main Houston, TX
  • United States
Order Number:AAI8314916
Pages:
187
Bibliometrics
Skip Abstract Section
Abstract

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

  1. ACM
    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.
  2. Zhao J and Zhao R (2018). K-DT, The Journal of Supercomputing, 74:4, (1655-1675), Online publication date: 1-Apr-2018.
  3. ACM
    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.
  4. ACM
    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.
  5. ACM
    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)
  6. 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)
  7. 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.
  8. ACM
    Allen R and Kennedy K (2004). Automatic loop interchange, ACM SIGPLAN Notices, 39:4, (75-90), Online publication date: 1-Apr-2004.
  9. ACM
    Burke M and Cytron R (2004). Interprocedural dependence analysis and parallelization, ACM SIGPLAN Notices, 39:4, (139-154), Online publication date: 1-Apr-2004.
  10. Kennedy K (2019). Fast Greedy Weighted Fusion, International Journal of Parallel Programming, 29:5, (463-491), Online publication date: 1-Oct-2001.
  11. ACM
    Kennedy K Fast greedy weighted fusion Proceedings of the 14th international conference on Supercomputing, (131-140)
  12. ACM
    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)
  13. 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
  14. 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.
  15. 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)
  16. ACM
    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)
  17. 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.
  18. Allen R and Kennedy K (2019). Vector Register Allocation, IEEE Transactions on Computers, 41:10, (1290-1317), Online publication date: 1-Oct-1992.
  19. 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.
  20. ACM
    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.
  21. ACM
    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)
  22. ACM
    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)
  23. ACM
    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.
  24. ACM
    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)
  25. ACM
    Psarris K On exact data dependence analysis Proceedings of the 6th international conference on Supercomputing, (303-312)
  26. 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.
  27. 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.
  28. 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.
  29. ACM
    Sarkar V and Gao G Optimization of array accesses by collective loop transformations Proceedings of the 5th international conference on Supercomputing, (194-205)
  30. ACM
    Psarris K, Kong X and Klappholz D Extending the I test to direction vectors Proceedings of the 5th international conference on Supercomputing, (330-340)
  31. ACM
    Kennedy K, McKinley K and Tseng C Analysis and transformation in the ParaScope editor Proceedings of the 5th international conference on Supercomputing, (433-447)
  32. ACM
    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)
  33. ACM
    Lu L (1991). A unified framework for systematic loop transformations, ACM SIGPLAN Notices, 26:7, (28-38), Online publication date: 1-Jul-1991.
  34. ACM
    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)
  35. ACM
    Goff G, Kennedy K and Tseng C (1991). Practical dependence testing, ACM SIGPLAN Notices, 26:6, (15-29), Online publication date: 1-Jun-1991.
  36. ACM
    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)
  37. ACM
    Ramanujam J and Sadayappan P Tiling multidimensional iteration spaces for nonshared memory machines Proceedings of the 1991 ACM/IEEE conference on Supercomputing, (111-120)
  38. 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.
  39. 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.
  40. ACM
    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.
  41. ACM
    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.
  42. ACM
    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)
  43. ACM
    Smith K, Appelbe B and Stirewalt K Incremental dependence analysis for interactive parallelization Proceedings of the 4th international conference on Supercomputing, (330-341)
  44. Kennedy K and McKinley K Loop distribution with arbitrary control flow Proceedings of the 1990 ACM/IEEE conference on Supercomputing, (407-416)
  45. Lu L and Chen M Subdomain dependence test for massive parallelism Proceedings of the 1990 ACM/IEEE conference on Supercomputing, (962-972)
  46. ACM
    Koblenz B and Noyce W Constraint based vectorization Proceedings of the 3rd international conference on Supercomputing, (195-204)
  47. ACM
    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)
  48. ACM
    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.
  49. ACM
    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)
  50. ACM
    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)
  51. ACM
    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)
  52. ACM
    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.
  53. ACM
    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.
  54. ACM
    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)
  55. ACM
    Arafeh B Interactive loop interchanging Proceedings of the 17th conference on ACM Annual Computer Science Conference, (418-418)
  56. ACM
    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)
  57. ACM
    Klappholz D, Kong X and Kalis A Refined Fortran: an update Proceedings of the 1989 ACM/IEEE conference on Supercomputing, (607-615)
  58. ACM
    Wu Y and Lewis T Parallel processor balance through loop spreading Proceedings of the 1989 ACM/IEEE conference on Supercomputing, (665-674)
  59. ACM
    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)
  60. ACM
    Bose P Interactive program improvement via EAVE: an expert adviser for vectorization Proceedings of the 2nd international conference on Supercomputing, (119-130)
  61. ACM
    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)
  62. ACM
    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)
  63. ACM
    Wallace D Dependence of multi-dimensional array references Proceedings of the 2nd international conference on Supercomputing, (418-428)
  64. ACM
    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)
  65. ACM
    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)
  66. ACM
    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)
  67. ACM
    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.
  68. ACM
    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.
  69. ACM
    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.
  70. ACM
    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)
  71. ACM
    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.
  72. Chastain M, Gostin G, Mankovich J and Wallach S The convex C240 architecture Proceedings of the 1988 ACM/IEEE conference on Supercomputing, (321-329)
  73. 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)
  74. ACM
    Arafeh B Vectorization and parallelization interactive assistant Proceedings of the 1988 ACM sixteenth annual conference on Computer science, (573-577)
  75. ACM
    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)
  76. ACM
    Burke M and Cytron R Interprocedural dependence analysis and parallelization Proceedings of the 1986 SIGPLAN symposium on Compiler construction, (162-175)
  77. ACM
    Burke M and Cytron R (2019). Interprocedural dependence analysis and parallelization, ACM SIGPLAN Notices, 21:7, (162-175), Online publication date: 1-Jul-1986.
  78. ACM
    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)
  79. ACM
    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.
  80. ACM
    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.
  81. ACM
    Allen J and Kennedy K Automatic loop interchange Proceedings of the 1984 SIGPLAN symposium on Compiler construction, (233-246)
  82. ACM
    Allen J and Kennedy K (1984). Automatic loop interchange, ACM SIGPLAN Notices, 19:6, (233-246), Online publication date: 1-Jun-1984.
  83. ACM
    Warren J A hierarchical basis for reordering transformations Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (272-282)
  84. ACM
    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)
  85. ACM
    Goldberg A and Paige R Stream processing Proceedings of the 1984 ACM Symposium on LISP and functional programming, (53-62)
Contributors
  • Rice University

Recommendations