Compiler Transformations for High-Performance Computing

David F. Bacon, Susan L. Graham and Oliver J. Sharp

EECS Department
University of California, Berkeley
Technical Report No. UCB/CSD-93-781
November 1993

http://www2.eecs.berkeley.edu/Pubs/TechRpts/1993/CSD-93-781.pdf

In the last three decades a large number of compiler transformations for optimizing programs have been implemented. Most optimizations for uniprocessors reduce the number of instructions executed by the program, and analyze the properties of scalar quantities using flow analysis techniques. In contrast, optimizations for high-performance vector and parallel processors maximize parallelism and memory locality, mostly by tracking the properties of arrays using loop dependence analysis.

In this survey we give an overview of the important high-level program restructuring techniques for imperative languages such as C and Fortran, and to describe how and when they should be applied on high-performance uniprocessors and on vector and multiprocessor machines. The basic issues involved in optimization are discussed, and the compiler analysis required for the transformations is described in some detail. A basic familiarity with modern computer architecture and program compilation is assumed.


BibTeX citation:

@techreport{Bacon:CSD-93-781,
    Author = {Bacon, David F. and Graham, Susan L. and Sharp, Oliver J.},
    Title = {Compiler Transformations for High-Performance Computing},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {1993},
    Month = {Nov},
    URL = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/1993/6309.html},
    Number = {UCB/CSD-93-781},
    Abstract = {In the last three decades a large number of compiler transformations for optimizing programs have been implemented. Most optimizations for uniprocessors reduce the number of instructions executed by the program, and analyze the properties of scalar quantities using flow analysis techniques. In contrast, optimizations for high-performance vector and parallel processors maximize parallelism and memory locality, mostly by tracking the properties of arrays using loop dependence analysis. <p>In this survey we give an overview of the important high-level program restructuring techniques for imperative languages such as C and Fortran, and to describe how and when they should be applied on high-performance uniprocessors and on vector and multiprocessor machines. The basic issues involved in optimization are discussed, and the compiler analysis required for the transformations is described in some detail. A basic familiarity with modern computer architecture and program compilation is assumed.}
}

EndNote citation:

%0 Report
%A Bacon, David F.
%A Graham, Susan L.
%A Sharp, Oliver J.
%T Compiler Transformations for High-Performance Computing
%I EECS Department, University of California, Berkeley
%D 1993
%@ UCB/CSD-93-781
%U http://www2.eecs.berkeley.edu/Pubs/TechRpts/1993/6309.html
%F Bacon:CSD-93-781