Open64

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

Open64 is a 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. Development has ceased, although other projects can use the project's source.

Contents

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 five 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 is used as the backend for the HPE NonStop OS compilers on the x86-64 platform. [3]

Open64 releases

VersionRelease date
5.02011-11-11
4.2.42011-04-12
4.2.32010-04-09
4.2.12008-12-08
4.22008-10-01
4.12007-12-03
4.02007-06-15
3.12007-04-13
3.02006-11-22
2.02006-10-02
1.02006-09-22
0.162003-07-07
0.152002-11-30
0.142002-03-04
0.132002-01-10

AMD x86 Open64 releases

VersionRelease date
4.5.2.12013-03-28
4.5.22012-08-08
4.5.12011-12-19
4.2.42010-06-29
4.2.3.22010-05-17
4.2.3.12010-01-29
4.2.32009-12-11
4.2.2.32009-11-23
4.2.2.22009-08-31
4.2.2.12009-06-03
4.2.22009-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. [4] The Chinese Academy of Sciences ported Open64 to the Loongson II platform. [5]

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

The University of Houston's OpenUH project, which is based on Open64, released a new version of its compiler suite in November 2015. [8]

See also

Related Research Articles

<span class="mw-page-title-main">GNU Compiler Collection</span> Free and open-source compiler for various programming languages

The GNU Compiler Collection (GCC) is a collection of compilers from the GNU Project that support various programming languages, hardware architectures and operating systems. The Free Software Foundation (FSF) distributes GCC as free software under the GNU General Public License. GCC is a key component of the GNU toolchain which is used for most projects related to GNU and the Linux kernel. With roughly 15 million lines of code in 2019, GCC is one of the largest free programs in existence. It has played an important role in the growth of free software, as both a tool and an example.

An optimizing compiler is a compiler designed to generate code that is optimized in aspects such as minimizing program execution time, memory use, storage size, and power consumption. Optimization is generally implemented as a sequence of optimizing transformations, algorithms that transform code to produce semantically equivalent code optimized for some aspect. It is generally CPU and memory intensive. In practice, factors such as available memory and a programmer's willingness to wait for compilation limit the optimizations that a compiler might provide. Research indicates that some optimization problems are NP-complete, or even undecidable.

IA-64 is the instruction set architecture (ISA) of the discontinued Itanium family of 64-bit Intel microprocessors. The basic ISA specification originated at Hewlett-Packard (HP), and was subsequently implemented by Intel in collaboration with HP. The first Itanium processor, codenamed Merced, was released in 2001.

In computer science, dynamic recompilation is a feature of some emulators and virtual machines, where the system may recompile some part of a program during execution. By compiling during execution, the system can tailor the generated code to reflect the program's run-time environment, and potentially produce more efficient code by exploiting information that is not available to a traditional static compiler.

In computing, binary translation is a form of binary recompilation where sequences of instructions are translated from a source instruction set to the target instruction set. In some cases such as instruction set simulation, the target instruction set may be the same as the source instruction set, providing testing and debugging features such as instruction trace, conditional breakpoints and hot spot detection.

x86-64 64-bit version of x86 architecture

x86-64 is a 64-bit version of the x86 instruction set, first announced in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mode.

In computing, especially digital signal processing, the multiply–accumulate (MAC) or multiply-add (MAD) operation is a common step that computes the product of two numbers and adds that product to an accumulator. The hardware unit that performs the operation is known as a multiplier–accumulator ; the operation itself is also often called a MAC or a MAD operation. The MAC operation modifies an accumulator a:

<span class="mw-page-title-main">LLVM</span> Compiler backend for multiple programming languages

LLVM is a set of compiler and toolchain technologies that can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes. The name LLVM originally stood for Low Level Virtual Machine, though the project has expanded and the name is no longer officially an initialism.

<span class="mw-page-title-main">Loongson</span> Chinese microprocessor manufacturer

Loongson is the name of a family of general-purpose, MIPS architecture-compatible, later in-house LoongArch architecture microprocessors, as well as the name of the Chinese fabless company that develops them. The processors are alternately called Godson processors, which is described as its academic name.

AMD Core Math Library (ACML) is an end-of-life software development library released by AMD, replaced by many open source libraries, including AMD libm 4.0. This library provides mathematical routines optimized for AMD processors.

<span class="mw-page-title-main">Chapel (programming language)</span> Parallel programming language

Chapel, the Cascade High Productivity Language, is a parallel programming language that was developed by Cray, and later by Hewlett Packard Enterprise which acquired Cray. It was being developed as part of the Cray Cascade project, a participant in DARPA's High Productivity Computing Systems (HPCS) program, which had the goal of increasing supercomputer productivity by 2010. It is being developed as an open source project, under version 2 of the Apache license.

<span class="mw-page-title-main">CUDA</span> Parallel computing platform and programming model

In computing, CUDA is a proprietary parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for accelerated general-purpose processing, an approach called general-purpose computing on GPUs (GPGPU). CUDA API and its runtime: The CUDA API is an extension of the C programming language that adds the ability to specify thread-level parallelism in C and also to specify GPU device specific operations. CUDA is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements for the execution of compute kernels. In addition to drivers and runtime kernels, the CUDA platform includes compilers, libraries and developer tools to help programmers accelerate their applications.

<span class="mw-page-title-main">The Portland Group</span> American technology company

PGI was a company that produced a set of commercially available Fortran, C and C++ compilers for high-performance computing systems. On July 29, 2013, Nvidia acquired The Portland Group, Inc. As of August 5, 2020, the "PGI Compilers and Tools" technology is a part of the Nvidia HPC SDK product available as a free download from Nvidia.

Intel Fortran Compiler, as part of Intel OneAPI HPC toolkit, is a group of Fortran compilers from Intel for Windows, macOS, and Linux.

Oracle Developer Studio, formerly named Oracle Solaris Studio, Sun Studio, Sun WorkShop, Forte Developer, and SunPro Compilers, is the Oracle Corporation's flagship software development product for the Solaris and Linux operating systems. It includes optimizing C, C++, and Fortran compilers, libraries, and performance analysis and debugging tools, for Solaris on SPARC and x86 platforms, and Linux on x86/x64 platforms, including multi-core systems.

The ROSE compiler framework, developed at Lawrence Livermore National Laboratory (LLNL), is an open-source software compiler infrastructure to generate source-to-source analyzers and translators for multiple source languages including C, C++, Fortran, OpenMP, Java, Python, and PHP.

PathScale Inc. was a company that developed a highly optimizing C, C++, and Fortran compiler suite for the x86-64 microprocessor architectures. It derives from the SGI compilers for the MIPS architecture R10000 processor, called MIPSPro.

<span class="mw-page-title-main">ROCm</span> Parallel computing platform: GPGPU libraries and application programming interface

ROCm is an Advanced Micro Devices (AMD) software stack for graphics processing unit (GPU) programming. ROCm spans several domains: general-purpose computing on graphics processing units (GPGPU), high performance computing (HPC), heterogeneous computing. It offers several programming models: HIP, OpenMP, and OpenCL.

References

  1. "x86 Open64 Compiler Suite". AMD. Archived from the original on 13 November 2013. Retrieved 12 November 2013.
  2. NVIDIA’s Experience with Open64
  3. "John Reagan Interview on LLVM, part 2". ecubesystems.com. 2019-05-01. Archived from the original on 2020-11-25. Retrieved 2020-12-21.
  4. "2010 Open64 Developers Forum, August 25, 2010". Archived from the original on June 12, 2010. Retrieved September 6, 2010.
  5. Open64 on MIPS: porting and enhancing Open64 for Loongson II
  6. Nigel Dessau, AMD CMO (June 22, 2009). "Sweet Suite, blog posting". Archived from the original on 2010-09-06.
  7. "AMD Open64 download page". Archived from the original on 2013-03-13. Retrieved 2012-11-13.
  8. OpenUH downloads page