AMD Optimizing C/C++ Compiler

Last updated
Developer(s) Advanced Micro Devices
Initial release2017;7 years ago (2017)
Stable release
5.0.0 / October 10, 2024;20 days ago (2024-10-10)
Operating system Linux
Type Compiler
License Freeware
Website developer.amd.com/amd-aocc/

The AMD Optimizing C/C++ Compiler (AOCC) is an optimizing C/C++ and Fortran compiler suite from AMD targeting 32-bit and 64-bit Linux platforms. [1] [2] It is a proprietary fork of LLVM + Clang with various additional patches to improve performance for AMD's Zen microarchitecture in Epyc, and Ryzen microprocessors. [1] [3]

Contents

Release history

AOCC version history [4]
AOCC versionDateLLVM versionNotes
1.0.0May 20176.0Uses DragonEgg with GCC 4.8.2 for Fortran. [1]
1.1.0December 20176.0
1.2.0April 20186.0Introduction of the Flang Fortan frontend.
1.2.1July 20186.0Bugfix release.
1.3.0December 20187.0Last version to use DragonEgg.
2.0.0August 20198.0Support for 2nd generation Zen CPUs. [5]
2.1.0November 20199.0 [6]
2.2.0June 202010.0
2.3.0December 202011.0Introduction of OpenMP debugger
3.0.0March 202112.0Support for 3rd generation Zen CPUs
3.1.0July 202112.0
3.2.0December 202113.0
4.0.0November 202214.0Support for 4th generation Zen CPUs; Fortran 2008 and Fortran OMP 4.5 compliance improvements; Fortran debuggability improvements; improved variants of scalar, vector, and loop transformations [7]
4.1.0August 202316.0Compliance to C++17 standards; default optimization level changed to -O2; -fPIC and -fPIE options made default; bit reproducibility support improved for C/C++ and Fortran; general improvements targeting compile time reduction; new option to display the AOCC Optimization Report; tuned for use with the AMD Math Library v4.1 [8]
4.2.0February 202416.0Bug fixes with Fortran pre-processing and compilation; bug fixes impacting performance of C, C++, and Fortran applications; tuned for use with the AMD Math Library v4.2 [9]
5.0.0October 202417.0.6Based on LLVM 17.0.6 release (llvm.org, Nov 2023); optimized support for AMD “Zen5” architecture; improved SLP and loop vectorization; improved LICM and loop optimizations; enhanced control/data flow optimizations; Zen5 tuned AOCL-LibM 5.0 (AMD Math Library) [10]

In a May 2017 benchmark comparing AOCC v1.0 to Clang 4 and 5, and GCC 6 through 8, Phoronix found AOCC provided marginal improvement over Clang 4.0 in several benchmarks and no difference in others. [3] Compilation time generally increased relative to Clang 4.0. Some benchmarks found some versions of GCC had better performance than some versions of Clang (AOCC included), and vice versa. In August 2019 Phoronix again benchmarked AOCC, now AOCC 2.0 against Clang 9 and GCC 9.1 and 10.0. [11]

Along with the compiler, AMD offers the AMD Optimizing CPU Libraries (AOCL), a set of numerical libraries that is roughly similar to Intel's Math Kernel Library and includes AMD Math Library (LibM), AMD Random Number Generator Library, AMD Secure RNG Library, AOCL-Sparse, BLIS, FFTW, libFLAME, and ScaLAPACK that are tuned for the Zen processors.

AMD also offers AMD μProf, a performance analysis tool similar to Intel VTune.

See also

Related Research Articles

<span class="mw-page-title-main">AMD</span> American multinational semiconductor company

Advanced Micro Devices, Inc. (AMD) is an American multinational corporation and fabless semiconductor company based in Santa Clara, California, that designs, develops, and sells computer processors and related technologies for business and consumer markets.

<span class="mw-page-title-main">Single instruction, multiple data</span> Type of parallel processing

Single instruction, multiple data (SIMD) is a type of parallel processing in Flynn's taxonomy. SIMD can be internal and it can be directly accessible through an instruction set architecture (ISA), but it should not be confused with an ISA. SIMD describes computers with multiple processing elements that perform the same operation on multiple data points simultaneously.

<span class="mw-page-title-main">OpenMP</span> Open standard for parallelizing

OpenMP is an application programming interface (API) that supports multi-platform shared-memory multiprocessing programming in C, C++, and Fortran, on many platforms, instruction-set architectures and operating systems, including Solaris, AIX, FreeBSD, HP-UX, Linux, macOS, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior.

<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">Mesa (computer graphics)</span> Free and open-source library for 3D graphics rendering

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers.

Intel oneAPI DPC++/C++ Compiler and Intel C++ Compiler Classic are Intel’s C, C++, SYCL, and Data Parallel C++ (DPC++) compilers for Intel processor-based systems, available for Windows, Linux, and macOS operating systems.

Clang is a compiler front end for the programming languages C, C++, Objective-C, Objective-C++, and the software frameworks OpenMP, OpenCL, RenderScript, CUDA, SYCL, and HIP. It acts as a drop-in replacement for the GNU Compiler Collection (GCC), supporting most of its compiling flags and unofficial language extensions. It includes a static analyzer, and several code analysis tools.

Advanced Vector Extensions are SIMD extensions to the x86 instruction set architecture for microprocessors from Intel and Advanced Micro Devices (AMD). They were proposed by Intel in March 2008 and first supported by Intel with the Sandy Bridge microarchitecture shipping in Q1 2011 and later by AMD with the Bulldozer microarchitecture shipping in Q4 2011. AVX provides new features, new instructions, and a new coding scheme.

<span class="mw-page-title-main">OpenCL</span> Open standard for programming heterogenous computing systems, such as CPUs or GPUs

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators. OpenCL specifies a programming language for programming these devices and application programming interfaces (APIs) to control the platform and execute programs on the compute devices. OpenCL provides a standard interface for parallel computing using task- and data-based parallelism.

The FMA instruction set is an extension to the 128 and 256-bit Streaming SIMD Extensions instructions in the x86 microprocessor instruction set to perform fused multiply–add (FMA) operations. There are two variants:

Intel oneAPI Math Kernel Library, formerly known as Intel Math Kernel Library, is a library of optimized math routines for science, engineering, and financial applications. Core math functions include BLAS, LAPACK, ScaLAPACK, sparse solvers, fast Fourier transforms, and vector math.

<span class="mw-page-title-main">Zen (first generation)</span> 2017 AMD 14-nanometer processor microarchitecture

Zen is the first iteration in the Zen family of computer processor microarchitectures from AMD. It was first used with their Ryzen series of CPUs in February 2017. The first Zen-based preview system was demonstrated at E3 2016, and first substantially detailed at an event hosted a block away from the Intel Developer Forum 2016. The first Zen-based CPUs, codenamed "Summit Ridge", reached the market in early March 2017, Zen-derived Epyc server processors launched in June 2017 and Zen-based APUs arrived in November 2017.

<span class="mw-page-title-main">Zen 2</span> 2019 AMD 7-nanometer processor microarchitecture

Zen 2 is a computer processor microarchitecture by AMD. It is the successor of AMD's Zen and Zen+ microarchitectures, and is fabricated on the 7 nm MOSFET node from TSMC. The microarchitecture powers the third generation of Ryzen processors, known as Ryzen 3000 for the mainstream desktop chips, Ryzen 4000U/H and Ryzen 5000U for mobile applications, as Threadripper 3000 for high-end desktop systems, and as Ryzen 4000G for accelerated processing units (APUs). The Ryzen 3000 series CPUs were released on 7 July 2019, while the Zen 2-based Epyc server CPUs were released on 7 August 2019. An additional chip, the Ryzen 9 3950X, was released in November 2019.

<span class="mw-page-title-main">Ryzen</span> AMD brand for microprocessors

Ryzen is a brand of multi-core x86-64 microprocessors designed and marketed by Advanced Micro Devices (AMD) for desktop, mobile, server, and embedded platforms based on the Zen microarchitecture. It consists of central processing units (CPUs) marketed for mainstream, enthusiast, server, and workstation segments and accelerated processing units (APUs) marketed for mainstream and entry-level segments and embedded systems applications.

<span class="mw-page-title-main">Epyc</span> AMD brand for server microprocessors

Epyc is a brand of multi-core x86-64 microprocessors designed and sold by AMD, based on the company's Zen microarchitecture. Introduced in June 2017, they are specifically targeted for the server and embedded system markets.

<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.

Transient execution CPU vulnerabilities are vulnerabilities in a computer system in which a speculative execution optimization implemented in a microprocessor is exploited to leak secret data to an unauthorized party. The archetype is Spectre, and transient execution attacks like Spectre belong to the cache-attack category, one of several categories of side-channel attacks. Since January 2018 many different cache-attack vulnerabilities have been identified.

<span class="mw-page-title-main">Zen 4</span> 2022 AMD 5-nanometer processor microarchitecture

Zen 4 is the name for a CPU microarchitecture designed by AMD, released on September 27, 2022. It is the successor to Zen 3 and uses TSMC's N6 process for I/O dies, N5 process for CCDs, and N4 process for APUs. Zen 4 powers Ryzen 7000 performance desktop processors, Ryzen 8000G series mainstream desktop APUs, and Ryzen Threadripper 7000 series HEDT and workstation processors. It is also used in extreme mobile processors, thin & light mobile processors, as well as EPYC 8004/9004 server processors.

<span class="mw-page-title-main">Zen 5</span> 2024 AMD 4-nanometer processor microarchitecture

Zen 5 is the name for a CPU microarchitecture by AMD, shown on their roadmap in May 2022, launched for mobile in July 2024 and for desktop in August 2024. It is the successor to Zen 4 and is currently fabricated on TSMC's N4X process. Zen 5 is also planned to be fabricated on the N3E process in the future.

References

  1. 1 2 3 "AOCC User guide" (PDF). AMD.
  2. "AMD Releases Optimizing C/C++ Compiler For Ryzen - Phoronix". www.phoronix.com.
  3. 1 2 "Benchmarking AMD's New AOCC Compiler For Ryzen - Phoronix". www.phoronix.com.
  4. "AOCC Archive Section". AMD.
  5. "AOCC 2.0 Install Guide" (PDF). developer.amd.com. Retrieved 2020-02-19.
  6. "AOCC 2.1 Install Guide" (PDF). developer.amd.com. Retrieved 2020-02-19.
  7. "AOCC 4.0 Release Notes" (PDF). www.amd.com. Retrieved 2024-04-08.
  8. "AOCC 4.1 Release Notes" (PDF). www.amd.com. Retrieved 2024-04-08.
  9. "AOCC 4.2 Release Notes" (PDF). www.amd.com. Retrieved 2024-04-08.
  10. "AOCC 5.0 Release Notes (New Features/Enhancements)". www.amd.com. Retrieved 2024-10-24.
  11. "GCC vs. LLVM Clang vs. AOCC Compiler Benchmarks On The AMD EPYC 7742 2P Linux Server - Phoronix". www.phoronix.com. Retrieved 2020-02-19.