Arm HPC FAQ
Moving to the Arm ecosystem means very little has changed for you as the user. There may be a few things that you'd like to clear up.
Q: Who are Arm and what do they do?
Arm are the world's leading semiconductor intellectual property (IP) supplier. This means they design a computer architecture that is fundamentally different to x86. These architectures are then licensed to partner companies who can either implement the design in its entirety, or alternatively create custom cores following the architecture specification.
Arm was originally formed in Cambridge 25 years ago, but now has offices across the globe including Austin, Texas, Shanghai, China and Bangalore, India. As well as formulating hardware designs, Arm also develop software to both analyze performance and run on Arm platforms.
Q: Why are Arm architectures different?
Arm architectures have always been designed to be power efficient. Low power is going to be increasingly important in HPC as the biggest machines grow towards exascale. Reducing these costs is vital. Armv8 is an entirely different instruction set to x86 hence things are done differently. For example, vectorization is done using NEON instructions rather than the SSE or AVX extensions you may be used to.
Q: What is Armv8 and AArch64?
The Armv8 architecture (officially Armv8-A) introduces 64-bit support to the Arm architecture with a focus on power-efficient implementations whilst maintaining compatibility with existing 32-bit software. By adopting a clean approach Armv8-A processors extend the performance range available while maintaining the low power consumption characteristics of the Arm processors that will power tomorrow's most innovative and efficient devices. The current Arm processors supporting the Armv8-A architecture are the Cortex-A72, Cortex-A57 and Cortex-A53 processors. AArch64 is the 64-bit execution state including exception model, memory model, programmers' model and instruction set support for that state that runs on an Armv8 architecture.
Q: If Arm don't make their chips then who does?
Arm has a wide variety of silicon partners. There are over 150 companies licensed to produce Cortex-A processors, which include the Cortex-A72, Cortex-A57 and Cortex-A53 processors. On top of this other companies have bought licenses to develop their own micro-architectures confirming to the Armv8 architecture. Examples of processors currently available for HPC and server include the Applied Micro Xgene, the Cavium ThunderX along with Cortex-A57 derived systems such as the Arm Seattle.
Q: OK, which chip is the best for HPC?
One of Arm's strengths as an architecture is that there is great flexibility in terms of the designs of final chips that are produced. This enables our chips to be used in everything from tiny embedded controllers, through low to high end mobile 'phones and now increasingly into the enterprise server and HPC market. Even separate companies including Cortex-A57 designs into their hardware have a lot of flexibility in how the rest of the architecture is designed. Where a partner designs their own micro-architecture conforming to the Armv8-A standard then different operations will be optimized, hence better performance will be seen on particular workloads.
Q: What about all these other acronyms? SoC, SiP, OEM?
SoC : System on Chip. A chip containing all the technology needed to perform the systems task. These days this may not be running an entire system, just managing a particular part of it.
SiP : System in Package. A module that houses a processor, memory and any other needed technology, typically physically stacked together rather than combined as in a SoC.
OEM : Original Equipment Manufacturer. This is the maker of a component used in a larger system, separate to that company. For example mobile 'phones typically have processors manufactured by a separate, specialized company.
Q: What compilers can I use?
There are choices of both open source and commercial compiler tools available already on Armv8 architectures. The former category is catered well by GCC and LLVM and Arm invests in both of these technologies to ensure increased performance for end-user applications. The commercial tools currently available include Arm Compiler for HPC and NAG's Fortran compiler. More details of all of these are given on the compiling page.
Q: What software is available?
Many Linux distributions are already available for Armv8 processors which means that most common programs you are used to already exist in pre-compiled forms. As far as specific HPC tools, libraries and packages go more packages are being ported all the time. More details can be found in the HPC Software page
Q: How hard is it to port my code?
Generally we have had few reports of codes not being easily portable to Arm HPC systems. Obviously if you have in your code assembler or intrinsic functions from other architectures these would need to be replaced in order to get everything working. As ever, get in touch if you're having difficulties with specific issues.
Q: Where can I get more help?
The Arm Connected Community is a good source of information from people with lots of experience of Arm technologies. In addition to the wider world there are many Arm engineers looking at posts in there who are eager to make your transition to Arm HPC as seamless as possible.