Open64

Open64
Developer(s) Silicon Graphics, Inc., Institute of Computing Technology, Chinese Academy of Sciences, Hewlett Packard, University of Delaware
Initial release 2002
Last release 5.0 / November 10, 2011 (2011-11-10)
Operating system Cross-platform, Linux
Type Compiler
License GNU General Public License
Website http://sourceforge.net/projects/open64/

Open64 is a discontinued, free, open source, optimizing compiler for the Itanium and x86-64 microprocessor architectures. It derives from the SGI compilers for the MIPS R10000 processor, called MIPSPro. It was initially released in 2000 as GNU GPL software under the name Pro64. The following year, University of Delaware adopted the project and renamed the compiler to Open64. It now mostly serves as a research platform for compiler and computer architecture research groups. Open64 supports Fortran 77/95 and C/C++, as well as the shared memory programming model OpenMP. It can conduct high-quality interprocedural analysis, data-flow analysis, data dependence analysis, and array region analysis.

The infrastructure

Its major components are the frontend for C/C++ (using GCC) and Fortran 77/90 (using the CraySoft front-end and libraries), Interprocedural analysis (IPA), loop nest optimizer (LNO), global optimizer (WOPT), and code generator (CG). Despite being initially written for a single computer architecture, Open64 has proven that it can generate efficient code for CISC, RISC, and VLIW architectures, including MIPS, x86, IA-64, ARM, and others.

Intermediate representation

A hierarchical intermediate representation (IR) with 5 main levels is used in this compiler to serve as the common interface among all the frontend and backend components. This IR is named WHIRL.

Versions

The original version of Open64 that was released in 2002 was missing its very advanced software pipelining code generator, and had only a rudimentary code generator for Itanium. The entire original MIPSPro compiler, with this code generator, is available under a commercial license as the Blackbird compiler from Reservoir Labs. The Showdown Paper documents the code generator that was not included in Open64. The very advanced compiler from Tilera, for its 64-core TILE64 chip, is based on Blackbird.

Open64 exists in many forks, each of which has different features and limitations. The "classic" Open64 branch is the Open Research Compiler (ORC), which produces code only for the Itanium (IA-64), and was funded by Intel. The ORC effort ended in 2003, and the current official branch (which originated from the Intel ORC project) is managed by Hewlett Packard and the University of Delaware's Computer Architecture and Parallel Systems Laboratory (CAPSL).

Other important branches include the compilers from Tensilica and the AMD x86 Open64 Compiler Suite.[1]

Nvidia is also using an Open64 fork to optimize code in its CUDA toolchain.[2]

Open64 releases

Version Release date
5.0 2011-11-10
4.2.4 2011-04-12
4.2.3 2010-04-09
4.2.1 2008-12-08
4.2 2008-10-01
4.1 2007-12-03
4.0 2007-06-15
3.1 2007-04-13
3.0 2006-11-22
2.0 2006-10-02
1.0 2006-09-22
0.16 2003-07-07
0.15 2002-11-30
0.14 2002-03-04
0.13 2002-01-10

AMD x86 Open64 releases

Version Release date
4.5.2.1 2013-03-28
4.5.2 2012-08-08
4.5.1 2011-12-19
4.2.4 2010-06-29
4.2.3.2 2010-05-17
4.2.3.1 2010-01-29
4.2.3 2009-12-11
4.2.2.3 2009-11-23
4.2.2.2 2009-08-31
4.2.2.1 2009-06-03
4.2.2 2009-04-24

Current development projects

Open64 is also used in a number of research projects, such as the Unified Parallel C (UPC) and speculative multithreading work at various universities. The 2010 Open64 Developers Forum describes projects done at Absoft, AMD, Chinese Academy of Sciences, Fudan University, HP, National Tsing Hua University, Nvidia, Tensilica, Tsinghua University, and University of Houston.[3] The Chinese Academy of Sciences ported Open64 to the Loongson II platform.[4]

AMD has extended and productized Open64 with optimizations designed for x86 multi-core processor advancements and multi-threaded code development.[5] AMD supports Open64 as a complementary compiler to GCC.[6]

See also

References

External links

This article is issued from Wikipedia - version of the Wednesday, December 30, 2015. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.