Open64 Compiler
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
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.
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/
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
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).
Figure
Program Representations
 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.
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
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
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
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.
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
Thank You

Open64 compiler

  • 1.
  • 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 anopen 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 languagescompilation 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 thecompiler 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).
  • 7.
  • 8.
  • 9.
     Five levelsof 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 andthe 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++ frontendwas 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 forx86 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
  • 15.