Abstract
Data dependence concepts are reviewed, concentrating on and extending previous work on direction vectors. A bit vector representation of direction vectors is discussed. Various program restructuring transformations, such as loop circulation (a form of loop interchanging), reversal, skewing, sectioning (strip mining), combing, and rotation, are discussed in terms of their effects on the execution of the program, the required dependence tests for legality, and the effects of each transformation on the dependence graph. The bit vector representation of direction vectors is used to develop simple and efficient bit vector operations for the dependence tests and to generate the modified direction vector for each transformation. Finally, a simple method to interchange complex convex loop limits is given, which is useful when several loop restructuring operations are being applied in sequence.
Similar content being viewed by others
References
Allen, J.R. 1983. Dependence analysis for subscripted variables and its application to program transformations. Ph.D. thesis, Rice Univ., Houston, Tex.
Allen, J.R., and Kennedy, K. 1984. Automatic loop interchange. In Proc., SIGPLAN '84 Symp. on Compiler Construction (Montreal, June 17–22), ACM Press, pp. 233–246.
Allen, J.R., and Kennedy, K. 1987. Automatic translation of Fortran programs to vector form. ACM Trans. Programming Languages and Systems, 9, 4 (June), 491–542.
Banerjee, U. 1988. Dependence Analysis for Supercomputing. Kluwer Academic Publishers, Norwell, Mass.
Banerjee, U. 1990. A theory of loop permutations. In Languages and Compilers for Parallel Computing (D. Gelernter, A. Nicolau, and D. Padua, eds.), MIT Press, Boston, and Pitman Publishing, London, pp. 54–74.
Bartle, R.G. 1964. The Elements of Real Analysis. John Wiley & Sons, New York.
Burke, M., and Cytron, R. 1986. Interprocedural dependence analysis and parallelization. In Proc., SIGPLAN '86 Symp. on Compiler Construction (Palo Alto, Calif., June 25–27), ACM Press, pp. 162–175.
Kuck, D.J., Kuhn, R.H., Padua, D.A., Leasure, B.R., and Wolfe, M. 1981. Dependence graphs and compiler optimizations. In Conf. Record of the 8th ACM Symp. on the Principles of Programming Languages (Williamsburg), ACM Press, pp. 207–218.
Loveman, D. 1977. Program improvement by source-to-source transformation. JACM, 20, 1 (Jan.), 121–145.
Wedel, D. 1975. Fortran for the Texas Instruments ASC System. ACM SIGPLAN Notices, 10, 3 (Mar.), 119–132.
Wolfe, M. 1978. Techniques for improving the inherent parallelism in programs. Rept. UIUCDCS-R-78–929, Dept. of Comp. Sci., Univ. of Ill., Urbana, Ill.
Wolfe, M. 1982. Optimizing supercompilers for supercomputers. Ph.D. thesis, Univ. of Ill., Urbana, Ill.
Wolfe, M. 1986a. Advanced loop interchanging. In Proc., 1986 Internat. Conf. on Parallel Processing (K. Hwang, S.M. Jacobs, and E.E. Swartzlander, eds.) (St. Charles, Ill., Aug. 19–22), IEEE Computer Soc. Press, pp. 536–543.
Wolfe, M. 1986b. Loop skewing: The wavefront method revisited. Internat. J. Parallel Programming, 15, 4 (Aug.), 279–294.
Wolfe, M. 1989. Optimizing Supercompilers for Supercomputers. MIT Press, Boston, and Pitman Publishing, London.
Wolfe, M. 1990. Loop rotation. In Languages and Compilers for Parallel Computing (D. Gelernter, A. Nicolau, and D. Padua, eds.), MIT Press, Boston, and Pitman Publishing, London, pp. 531–553.
Wolfe, M., and Banerjee, U. 1987. Data dependence and its application to parallel processing. Internat. J. Parallel Programming, 16, 2 (Apr.), 137–178.
Author information
Authors and Affiliations
Additional information
This work was supported by NSF Grant CCR-8906909 and DARPA Grant MDA972-88-J-1004.
Rights and permissions
About this article
Cite this article
Wolfe, M. Data dependence and program restructuring. J Supercomput 4, 321–344 (1991). https://doi.org/10.1007/BF00129834
Issue Date:
DOI: https://doi.org/10.1007/BF00129834