AMD Optimizing C/C++ Compiler

Last updated
Developer(s) Advanced Micro Devices
Initial release2017;7 years ago (2017)
Stable release
4.2.0 / February 27, 2024;55 days ago (2024-02-27)
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]

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. [10]

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 semiconductor company based in Santa Clara, California, that develops 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.

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 C, C++, Objective-C, and Objective-C++ programming languages, as well as the OpenMP, OpenCL, RenderScript, CUDA, SYCL, and HIP frameworks. It acts as a drop-in replacement for the GNU Compiler Collection (GCC), supporting most of its compilation 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 processor shipping in Q1 2011 and later by AMD with the Bulldozer processor shipping in Q3 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 programming languages 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 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.

Bit manipulation instructions sets are extensions to the x86 instruction set architecture for microprocessors from Intel and AMD. The purpose of these instruction sets is to improve the speed of bit manipulation. All the instructions in these sets are non-SIMD and operate only on general-purpose registers.

Zen is the codename for a family of computer processor microarchitectures from AMD, first launched in February 2017 with the first generation of its Ryzen CPUs. It is used in Ryzen, Ryzen Threadripper, and Epyc (server).

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

Zen is the codename for the first iteration in a family of computer processor microarchitectures of the same name 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-nanometre 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/Message Passing Interface (MPI), 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.

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. "GCC vs. LLVM Clang vs. AOCC Compiler Benchmarks On The AMD EPYC 7742 2P Linux Server - Phoronix". www.phoronix.com. Retrieved 2020-02-19.