Abstract:
We present a framework for unifying iteration reordering transformations such as loop interchange, loop distribution, skewing, tiling, index set splitting and statement reordering. The framework is based on the idea that a transformation can be represented as a schedule that maps the original iteration space to a new iteration space. The framework is designed to provide a uniform way to represent and reason about transformations. As part of the framework, we provide algorithms to assist in the building and use of schedules. In particular, we provide algorithms to test the legality of schedules, to align schedules and to generate optimized code for schedules. This work is supported by an NSF PYI grant CCR-9157384 and by a Packard Fellowship. 1 Introduction Optimizing compilers reorder iterations of statements to improve instruction scheduling, register use, and cache utilization, and to expose parallelism. Many different reordering transformations have been developed and studied, su...
Citations
|
644
|
A data locality optimizing algorithm
– Wolf, Lam
- 1991
|
|
610
|
A set of Level 3 Basic Linear Algebra Subprograms
– Dongarra, Croz, et al.
- 1990
|
|
420
|
Optimizing Supercompilers for Supercomputers
– Wolfe
- 1989
|
|
351
|
The Omega Test: a Fast and Practical Integer Programming Algorithm for Dependence Analysis
– Pugh
- 1991
|
|
351
|
A Loop Transformation Theory and an Algorithm to Maximize Parallelism
– Wolf, Lam
- 1991
|
|
277
|
Automatic translation of Fortran programs to vector form
– Allen, Kennedy
- 1987
|
|
234
|
Conversion of control dependence to data dependence
– Allen, Kennedy, et al.
- 1983
|
|
163
|
Unimodular transformations of double loops
– Banerjee
- 1990
|
|
159
|
More iteration space tiling
– Wolfe
- 1989
|
|
142
|
Some efficient solutions to the affine scheduling problem, part II: multidimensional time
– Feautrier
- 1992
|
|
113
|
Parallel Programming and Compilers
– Polychronopoulos
- 1988
|
|
110
|
A singular loop transformation framework based on non-singular matrices
– Li, Pingali
- 1994
|
|
88
|
Compiler blockability of numerical algorithms
– Carr, Kennedy
- 1992
|
|
64
|
The tiny loop restructuring research tool
– Wolfe
- 1991
|
|
62
|
Automatic Decomposition of Scientific Programs for Parallel Execution
– Allen, Callahan, et al.
- 1987
|
|
43
|
Non-unimodular transformations of nested loops
– Ramanujam
|
|
39
|
A General Framework for iteration-Reordering Loop Transformations (Technical Summary
– Sarkar, Thekkath
- 1992
|
|
36
|
Speedup of ordinary programs
– Banerjee
- 1979
|
|
36
|
Uniform techniques for loop optimization
– Pugh
- 1991
|
|
26
|
Going beyond integer programming with the Omega test to eliminate false data dependences
– Pugh, Wonnacott
- 1992
|
|
24
|
The systematic design of systolic arrays
– Quinton
- 1987
|
|
19
|
A unified framework for systematic loop transformations
– Lu
- 1991
|
|
15
|
Deriving good transformations for mapping nested loops on hierarchical parallel machines in polynomial time
– Kumar, Kulkarni, et al.
- 1992
|
|
11
|
Massive Parallelism through Program Restructuring
– Wolfe
- 1990
|