SGI Pro64/Open64 Compiler

Overviews and Help

We have this installed locally, ask Ben Breech for access, as well as access to working benchmarks

Tutorial*** on the Pro64/Open64, including introduction and framework, code generation, and case studies.

J. N. Amaral, C. Barton, A. C. Macdonell, and M. McNaughton, "Using the SGI Pro64 Open Source Compiler Infra-Structure for Teaching and Research,"  13th Symposium on Computer Architecture and High Performance Computing, Pirenopolis, GO, Brazil, September, 2001. ( Abstract*) ( PostScript**)

Amaral's slideshows*

Amaral's 680 class* (similar to this class)

How to install

Follow links to Open64***, Ski***, and Native User Environment*** to find the software, and follow installation instructions at each site.  Install on a Linux box with a IA-32 (Pentium) chip.

SGI Pro64* was written for the IA-64 architecture (a.k.a. Itanium*), it is now called the Open64 Compiler***. 

We will probably use the Ski IA-64 Simulator*** and the Native User Environment*** (NUE) from HP in order to run the Open64 on a IA-32 (Pentium) computer running Linux.

Problems installing? Check out these mail archives to see some troubles others have had.

Architecture (phases)

See Overview of The Pro64 Code Generator**, where the rightmost chart was found.

Or the Tutorial*** on the Pro64/Open64, where the leftmost chart was found.

Definitions

WHIRL = Intermediate Representation of Pro64

IGLS = Integrated Global Local Scheduling

CGIR = Code Generation Intermediate Representation

GRA/LRA = Global and Local Register Allocation

EBO = Extended Block Optimization

Optimizations

See Overview of The Pro64 Code Generator** and especially, the Tutorial***

The Open64 Compiler performs the following optimizations:

Inter-Procedural Analysis, alias analysis, array section, code layout analysis, inlining, cloning, dead function and variable elimination, and constant propagation.

Loop Level: loop fission, loop fusion, loop unroll and jam, loop interchange, loop peeling, loop tiling, and vector data prefetching

Global: partial redundancy elimination, support for speculative code motion