Adaptive loop transformations for scientific programs

To facilitate the efficient execution of scientific programs, parallelizing compilers apply a wide range of loop transformations. In some situations it may not be possible to determine the applicability and usefulness of the transformations at compile time. We develop adaptive versions of various loop transformations which lend themselves to efficient application at run time. instead of explicitly applying a transformation at compile time, we generate adaptive code which is able to behave like the transformed code, if so desired, at run time. Therefore an adaptive program can be viewed as expressing multiple ways of executing a program. The selection of the particular execution is based upon run time information. Adaptive programs offer a more practical and powerful alternative to multiversion programs.

[1]  Chau-Wen Tseng,et al.  Compiler optimizations for improving data locality , 1994, ASPLOS VI.

[2]  Michael Wolfe,et al.  Multiple Version Loops , 1987, ICPP.

[3]  Evangelos P. Markatos,et al.  Using processor affinity in loop scheduling on shared-memory multiprocessors , 1992, Supercomputing '92.

[4]  Peter Lee,et al.  Lightweight Run-Time Code Generation , 1994, PEPM.

[5]  Edward S. Davidson,et al.  Highly concurrent scalar processing , 1986, ISCA 1986.

[6]  Ken Kennedy,et al.  A Methodology for Procedure Cloning , 1993, Computer languages.

[7]  Ken Kennedy,et al.  Maximizing Loop Parallelism and Improving Data Locality via Loop Fusion and Distribution , 1993, LCPC.

[8]  David A. Padua,et al.  Dynamic Dependence Analysis: A Novel Method for Data Depndence Evaluation , 1992, LCPC.

[9]  John Zahorjan,et al.  Improving the performance of runtime parallelization , 1993, PPOPP '93.

[10]  Susan J. Eggers,et al.  A case for runtime code generation , 1993 .

[11]  Monica S. Lam,et al.  The cache performance and optimizations of blocked algorithms , 1991, ASPLOS IV.

[12]  Rajiv Gupta,et al.  Techniques for integrating parallelizing transformations and compiler based scheduling methods , 1992, Proceedings Supercomputing '92.

[13]  Joel H. Saltz,et al.  Run-Time Parallelization and Scheduling of Loops , 1991, IEEE Trans. Computers.

[14]  Joel H. Saltz,et al.  Run-time parallelization and scheduling of loops , 1989, SPAA '89.

[15]  David A. Padua,et al.  Compiler Algorithms for Synchronization , 1987, IEEE Transactions on Computers.

[16]  François Irigoin,et al.  Supernode partitioning , 1988, POPL '88.