Loop distribution with arbitrary control flow

A general and optimal algorithm for loop distribution when control flow is present is proposed. The algorithm can be used to enhance the effectiveness of vectorizers, parallelizers, and programming environments. The method performs loop distribution in the presence of control flow based on control dependencies. This algorithm is optimal in that it generates the minimum number of new arrays and tests possible. A code generation algorithm that produces code for the resulting program without replicating statements or conditions is also presented.<<ETX>>

[1]  Corrado Böhm,et al.  Flow diagrams, turing machines and languages with only two formation rules , 1966, CACM.

[2]  Arthur J. Bernstein,et al.  Analysis of Programs for Parallel Processing , 1966, IEEE Trans. Electron. Comput..

[3]  Yoichi Muraoka,et al.  Parallelism exposure and exploitation in programs , 1971 .

[4]  R. A. Towle,et al.  Control and data dependence for program transformations. , 1976 .

[5]  David A. Padua,et al.  Dependence graphs and compiler optimizations , 1981, POPL '81.

[6]  Ken Kennedy,et al.  PFC: A Program to Convert Fortran to Parallel Form , 1982 .

[7]  Ken Kennedy,et al.  Conversion of control dependence to data dependence , 1983, POPL '83.

[8]  John Randal Allen,et al.  Dependence analysis for subscripted variables and its application to program transformations , 1983 .

[9]  Jeanne Ferrante,et al.  On linearizing parallel code , 1985, POPL.

[10]  Randolph G. Scarborough,et al.  A Vectorizing Fortran Compiler , 1986, IBM J. Res. Dev..

[11]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[12]  Ken Kennedy,et al.  Automatic translation of FORTRAN programs to vector form , 1987, TOPL.

[13]  Utpal Banerjee,et al.  Dependence analysis for supercomputing , 1988, The Kluwer international series in engineering and computer science.

[14]  Wilson C. Hsieh,et al.  A framework for determining useful parallelism , 1988, ICS '88.

[15]  Henry G. Dietz Finding Large-Grain Parallelism In Loops with Serial Control Dependencies , 1988, ICPP.

[16]  Jeanne Ferrante,et al.  Generating sequential code from parallel code , 1988, ICS '88.

[17]  William Baxter,et al.  The program dependence graph and vectorization , 1989, POPL '89.

[18]  Ken Kennedy,et al.  The parascope editor: an interactive parallel programming tool , 1989, Supercomputing '89.

[19]  Ken Kennedy,et al.  Software methods for improvement of cache performance on supercomputer applications , 1989 .

[20]  Ken Kennedy,et al.  The parascope editor: an interactive parallel programming tool , 1993, Proceedings of the 1989 ACM/IEEE Conference on Supercomputing (Supercomputing '89).

[21]  Vivek Sarkar,et al.  Experiences using control dependence in PTRAN , 1990 .