Open64 is an open source, optimizing compiler tool for Intel Itanium platform. It was released by SGI (Silicon Graphics, Inc) company and now mostly serves as a research platform for compiler and computer architecture research groups
2. Submitted By:
Maria Akther
ID: 083-20-119
Dept.:Computer Science
Daffodil International University
Submitted To:
Mohammad Zaidul Karim
Senior Lecturer
Dept. of CSE,CS &CIS
Daffodil International University
3. Introduction
Open64 is an open source, optimizing compiler tool for
Intel Itanium platform. It was released by SGI (Silicon
Graphics, Inc) company and now mostly serves as a
research platform for compiler and computer
architecture research groups.
4. Overview
Developer(s):
Silicon Graphics, Inc., Institute of Computing Technology, Chinese Academy of
Sciences, Hewlett Packard, University of Delaware
Initial release:
2002
Stable release:
5.0 / November 10, 2011
Operating system:
Cross-platform, Linux
Type:
Compiler
License:
GNU General Public License
Website:
http://www.open64.net/
5. Possible source languages compilation
Open64 supports Fortran 77/95 and C/C++, as well as the shared
memory API OpenMP. It has the capability to conduct high-quality
interprocedural analysis, data flow analysis, data dependence analysis
and array region analysis.
Possible targeted computer architectures
For the Itanium and x86-64 microprocessor architectures
6. Architecture of the compiler
Its major components are:
The frontend for C/C++ and Fortran 77/90,
Interprocedural analysis (IPA),
Loop nest optimizer (LNO),
Global optimizer (WOPT) and
Code generator (CG).
9. Five levels of intermediate representation (IR) are used in this
compiler to serve as the common interface among all the frontend
and backend components. This IR is named WHIRL.
1. Front Ends:The C and C++ front ends are based on GNU
technology; the Fortran90/95 front end is the SGI Pro64 (Cray)
Fortran front end. Each of these produces a very high level IR for
the input program units, stored as a so-called “.B” file. This
representation is available for the subsequent phases.
10. 2.Roles of IPA :
The only optimization component operating at program scope
Analysis: collect information from entire program
Optimization: performs optimizations across procedure boundaries
Depends on later phases for full optimization effects
Supplies cross-file information for later optimization phases
3. Loop Nest Optimizations:
Transformations for Data Cache
Transformations that help other optimizations
Vectorization and Parallellization
11. The Components and the Phases
Front-End Parsing / Very High Level Whirl
IPA/
Inliner
Inlines procedures /VHW, alias analysis,
array section, code layout, procedure
cloning, dead function/variable
elimination, constant propagation
Loop Nest Optimizer Loop Fusion, Fission, Unrolling, Jam,
Interchange, Peeling, Tiling, Vector Data
Prefetching, Loop Dependence Analysis
Global Optimizer Traditional Optimizations, SSA
Code Generation Generate the code
12. Open64 Research Activities
UPC – UC Berkeley
OpenMP & Tools – U of Houston
EPS, a global scheduler –SNU
Static analysis / performance advisory – Google
Cyclops – University of Delaware
Speculative Parallel Threading – UMN
13. Limitations
C/C++ frontend was adopted from gcc 2.96, which is a
troublesome unofficial gcc compiler introducing many
compatibility problems.
It can only generate binary code for Itanium platform. And the
worst thing for it is that there is no clear goal for its existence
and there are so many separated branches based on it.
14. Planned Items for x86 Open64 Compiler
• work on processor optimizations/tuning
• improve the vectorizer
• Improve (or fully utilize) alias analysis framework
• Improve Open64 code generation
• Improve robustness of compiler
• Plans to support the new C and C++ standards which are in final stage of
approval
• Static analysis (intra and cross file)
• Runtime checks (uninitialized variables, array bounds, checks for
multithreading)
• Multi-threading -Data race detection