Skip to content

Latest commit

 

History

History
27 lines (13 loc) · 2.89 KB

File metadata and controls

27 lines (13 loc) · 2.89 KB

Compilers for Arm64

Many commercial and open source compilers now support Arm64. See the compilers page for details, recommendations, and best practices. We also recommend you check the language-specific considerations.

NVIDIA HPC Compilers

The NVIDIA HPC SDK includes proven compilers, libraries and software tools essential to maximizing developer productivity and the performance and portability of HPC applications. The NVIDIA HPC SDK compilers enable cross-platform C, C++, and Fortran programming for NVIDIA GPUs and multicore Arm, OpenPOWER, or x86-64 CPUs. They are ideal for HPC modeling and simulation applications written in C, C++, or Fortran with OpenMP, OpenACC, and CUDA.

These compilers are also fully interoperable with NVIDIA’s optimized math libraries, communication libraries, and performance tuning and debugging tools. The NVIDIA HPC SDK’s accelerated math libraries maximize performance on common HPC algorithms, and the optimized communications libraries enable standards-based scalable systems programming. The integrated performance profiling and debugging tools simplify porting and optimization of HPC applications, and the containerization tools enable easy deployment on-premises or in the cloud. In short, the HPC SDK provides all the tools you need to build HPC applications for GPUs, CPUs, or the cloud.

GNU Compilers

When using the GNU compilers, we strongly recommend GCC version 11 or later. Arm Inc. is a long-standing contributor to the GNU compilers, so much so that Arm and Arm's partners currently contribute the majority of GCC updates. Quite old GNU compilers will work on Arm64 CPUs, however you should always use the latest versions for best performance.

LLVM Compilers

LLVM compilers support Arm64 CPUs quite well, though mainly for C and C++ (clang and clang++). LLVM's Fortran front-end (flang) is not widely used and is still maturing. Arm Inc's provides multiple LLVM-based compilers, both for server-class Arm64 systems and for embedded and mobile devices. The Arm Compiler for Linux is based on LLVM and Arm is committed to upstreaming all LLVM patches it develops.

Arm Compiler for Linux

The Arm Compiler for Linux is tailored to the development of HPC applications. It is a free-to-use compiler built on LLVM13. For more details see this blog post about the launch of Arm Compiler for Linux version 22.0.

HPE/Cray, Fujitsu, and Other Vendor Compilers

Arm vendors like HPE/Cray and Fujitsu also provide compilers that target their own Arm-based products. Code generated by these vendor compilers tends to be very highly tuned for the target platform and therefore will not run well, if at all, on the NVIDIA Arm HPC Developer Kit.