Developer(s) | Advanced Micro Devices |
---|---|
Initial release | 2017 |
Stable release | 5.0.0 / October 10, 2024 |
Operating system | Linux |
Type | Compiler |
License | Freeware |
Website | developer |
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]
AOCC version | Date | LLVM version | Notes |
---|---|---|---|
1.0.0 | May 2017 | 6.0 | Uses DragonEgg with GCC 4.8.2 for Fortran. [1] |
1.1.0 | December 2017 | 6.0 | |
1.2.0 | April 2018 | 6.0 | Introduction of the Flang Fortan frontend. |
1.2.1 | July 2018 | 6.0 | Bugfix release. |
1.3.0 | December 2018 | 7.0 | Last version to use DragonEgg. |
2.0.0 | August 2019 | 8.0 | Support for 2nd generation Zen CPUs. [5] |
2.1.0 | November 2019 | 9.0 | [6] |
2.2.0 | June 2020 | 10.0 | |
2.3.0 | December 2020 | 11.0 | Introduction of OpenMP debugger |
3.0.0 | March 2021 | 12.0 | Support for 3rd generation Zen CPUs |
3.1.0 | July 2021 | 12.0 | |
3.2.0 | December 2021 | 13.0 | |
4.0.0 | November 2022 | 14.0 | Support 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.0 | August 2023 | 16.0 | Compliance 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.0 | February 2024 | 16.0 | Bug 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.0 | October 2024 | 17.0.6 | Based 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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.