Arm Compiler for HPC

See what's new in each release, and access the Release Notes for current and previous versions of Arm Compiler for HPC with Arm Performance Libraries.

To get the latest version, download the Arm Compiler for HPC package, and follow the steps in the installation instructions.

 

Arm Compiler for HPC

Version 1.3

Released: June 29, 2017

What's new in 1.3

Arm Compiler for HPC contains the following packages:

  • Arm C/C++/Fortran Compiler v1.3
  • Arm Performance Libraries v2.2.0
  • GNU GCC 6.1

New features and enhancements

==========================

  • Arm C/C++/Fortran Compiler 1.3:
    Beta support for Fortran compilation using the new armflang front-end.
    Fortran 77, 90, 95 and 2003 are supported, as is OpenMP 3.1 (excluding
    target offloading). Support for the Armv8 SVE extension for Armv8-A AArch64. Added support for UDOT/SDOT - 8-bit dot-product instructions, which are optional in Armv8.2A.

  • Arm Performance Libraries 2.2.0:
    Performance and memory usage improvements. All optimized varieties of the Arm Performance Libraries are now included. The user should load the correct module file for the most optimal library for their platform.

  • Packaging: RPMs
    The RPMs shipped for Redhat distributions are now signed by Arm's HPC GPG key. This key can be downloaded from: https://developer.arm.com/-/media/files/keys/GPG-PUB-KEY-ARM-HPC SW-TOOLS.PUB and imported by running: % rpm --import GPG-PUB-KEY-ARM-HPC-SW-TOOLS.PUB

Release Note for Release History 1.3

ARM Compiler for HPC 1.3
========================

ARM Compiler for HPC 1.3 suite provides a complete compiling environment, with
ARM C/C++/Fortran Compiler and ARM Performance Libraries, to develop and tune
your HPC applications on ARMv8-A based SoCs. The Fortran compiler, armflang, is
a new beta feature for this release. This release of the Fortran Compiler does
not support the ARM Performance Libraries as they cannot be built with the beta
compiler.

It contains the following packages:

- ARM C/C++/Fortran Compiler 1.3

  ARM's C/C++/Fortran Compiler for HPC.  This release includes beta support for
  Fortran compilation by using the new armflang compiler front-end. This release
  of the Fortran Compiler does not support the ARM Performance Libraries. This
  release also includes support for SVE - the Scalable Vector Extensions to the
  ARMv8-A AArch64 architecture.

  Documentation for the beta Fortran compiler is available online here:

  https://developer.arm.com/products/software-development-tools/hpc/arm-fortran-compiler

  Further documentation for the compiler is available online here:

  https://developer.arm.com/products/software-development-tools/hpc/documentation

- ARM Performance Libraries 2.2.0

  The ARM Performance Libraries optimized for AArch64 and for specific AArch64
  implementations. These provide BLAS, LAPACK and FFT routines optimized for
  execution on 64-bit ARM. Please note that there are multiple libraries and
  module files available for this package. The user should load the most optimal
  library for their platform.

  This release includes multiple ARM Performance Libraries packages, each of
  which are optimized for individual ARMv8 AArch64 implementations (Cortex-A53,
  Cortex-A57, Cortex-A72, ThunderX, ThunderX2CN99, and X-Gene 1). We recommend
  you use the version that matches your platform for the best performance. You
  can also use the generic AArch64 implementation by running:

  % module load Generic-AArch64/<OS>/<OS_Version>/armpl/2.1.0

  Or for the evaluation:

  % module load Generic-AArch64/<OS>/<OS_Version>/armpl_time_limited/2.1.0

- GNU GCC 6.1

  A build of GNU's GCC 6.1 release provided for convenience and for
  OpenMP/libgfortran compatibility with the ARM Performance Libraries. This
  is a GNU tool suite and the GPL source code can be downloaded separately.
  This build is not supported by ARM.

Changes in this Release
==========================

New features and enhancements:

- ARM C/C++/Fortran Compiler 1.3:
  Beta support for Fortran compilation using the new armflang front-end.
  Fortran 77, 90, 95 and 2003 are supported, as is OpenMP 3.1 (excluding
  target offloading).
  Support for the ARMv8 SVE extension for ARMv8-A AArch64.
  Added support for UDOT/SDOT - 8-bit dot-product instructions, which are
  optional in ARMv8.2A.

- ARM Performance Libraries 2.2.0:
  Performance and memory usage improvements.
  All optimized varieties of the ARM Performance Libraries are now included.
  The user should load the correct module file for the most optimal library for
  their platform.

- Packaging: RPMs
  The RPMs shipped for Redhat distributions are now signed by ARM's HPC GPG
  key. This key can be downloaded from:
  https://developer.arm.com/-/media/files/keys/GPG-PUB-KEY-ARM-HPC-SW-TOOLS.PUB
  And imported by running:
  % rpm --import GPG-PUB-KEY-ARM-HPC-SW-TOOLS.PUB

Bug fixes:

- ARM C/C++/Fortran Compiler 1.3:
  O-474:  OpenMP is now provided as both static and shared libraries.
  S-1852: The assembler now allows FTMAD to be prefixed by the movprfx
  instruction.
  Various small bug fixes and improvements to armclang/armclang++.

- ARM Performance Libraries 2.2.0:
  Various small bug fixes and improvements.

- GNU GCC 6.1:
  O-413: The libstdc++ headers shipped with GCC contained an incorrect
  definition of isnan for some of the target linux distributions. This release
  corrects the issue.
  O-422: The finclude directories shipped with GCC were missing the omp_lib.*
  files. This release corrects the issue.

Other changes:

- Installer
  The installer now allows the user to specify a destination directory for the
  install. This results in a user-only installation along with the relevant
  module files. Please note that the included uninstall.sh helper script will
  not uninstall this type of installation.

System Requirements
===================

This suite is supported on the following Linux platforms:

- AArch64 Redhat 7.2
- AArch64 Redhat 7.3
- AArch64 SUSE 12
- AArch64 Ubuntu 14.04

Installation Instructions
=========================

To install the ARM Compiler for HPC suite, you should run the installation
script as a privileged user:

% ./arm-compiler-for-hpc-1.3*.sh

The installer displays the EULA and prompts you to agree to the terms.
Type 'yes' at the prompt to agree.

For headless installation, run the installer with the '--accept'
command-line parameter to automatically accept the EULA.

To perform a local install, run the installer with the '--install-to <dir>'
option.

All packages are unpacked to /opt/arm/<package_name> with environment
module files available under /opt/arm/modulefiles. Extra documentation can be
found, for each installed package, at /opt/arm/<package_name>/share/. Local
installs have the same directory structure starting from the user's chosen
installation root.

RPMs
====

The installed packages are shipped as RPMs for RPM based Linux distributions.
These RPMs are signed by ARM's HPC GPG key. The public key can be downloaded
from:

https://developer.arm.com/-/media/files/keys/GPG-PUB-KEY-ARM-HPC-SW-TOOLS.PUB

This key can be imported by running:
% rpm --import GPG-PUB-KEY-ARM-HPC-SW-TOOLS.PUB

Environment Modules
===================

Each installed package has an Environment Module file installed under
/opt/arm/modulefiles. You can add this directory to your
${MODULESHOME}/init/.modulespath file or to your $MODULEPATH environment
variable. For example:

% # For SH or BASH shells:
% export MODULEPATH=$MODULEPATH:/opt/arm/modulefiles

Alternatively you can use the 'module use' command:

% module use /opt/arm/modulefiles

Once your environment has been configured to use the module files, use the
'module avail' command to list the available modules and the 'module load'
command to set up your environment to use them.

The main module file for this release is loaded by running:

% module load Generic-AArch64/<OS>/<OS_Version>/suites/arm-compiler-for-hpc/1.3

This will load all of the modules belonging to the packages included with this
product with the exception of the ARM Performance Libraries. You can also
module load the individual components:

- ARM C/C++/Fortran Compiler 1.3

  Generic-AArch64/<OS>/<OS_Version>/arm-hpc-compiler/1.3

- ARM Performance Libraries 2.2.0

  <Specific_Core>/<OS>/<OS_Version>/armpl/2.2.0

  Or for the evaluation:
  <Specific_Core>/<OS>/<OS_Version>/armpl_time_limited/2.2.0

- GNU GCC 6.1

  Generic-AArch64/<OS>/<OS_Version>/gcc/6.1.0

More information about Environment Modules can be found at:
  http://modules.sourceforge.net

C Libraries
===========

The compilers included with this suite are built to use the C Libraries
provided by your linux distribution. If errors such as "ld: cannot find crt1.o"
are reported, you will need to install the libraries on your system.

The package names for these libraries are:

SUSE and RHEL: glibc-devel
Ubuntu:        libc6-dev


Known Issues
============

- ARM C/C++/Fortran Compiler 1.3 and ARM Performance Libraries 2.2.0
  This release of the Fortran compiler does not support the ARM Performance
  Libraries.

- ARM C/C++/Fortran Compiler 1.3
  S-1777 - A known armflang bug in alias analysis of inlined functions, which
  can cause incorrect results in some circumstances where function inlining
  occurs. This will be fixed in a future release. The workaround with minimum
  impact to the optimization is to add ‘-Mx,183,0x20000’ to the armflang
  command line.

- Environment Modules and Lmod
  O-484: If you are using lmod as your environment module package, you should
  use 'module -t avail' rather than 'module avail' to avoid an incompatibility
  with the ARM supplied module files.

Documentation
=============

Once installed, each package has a README and Release Notes located at
/opt/arm/<package_name>/share.

Documentation about all the components, some examples of installations and
using the tools can be found online at:

https://developer.arm.com/products/software-development-tools/hpc/documentation

If you require support please contact support-hpc-sw@arm.com

Example Code
============

There is example code included in this suite as part of the ARM Performance
Libraries. This code can be found at:
/opt/arm/armpl*<ARMPL_Version>*/examples
You will need to copy this to a writeable directory and load both the ARM
Compiler and ARM Performance Libraries environment modules for the examples
to build.

EG:

# Copy the examples somewhere writeable:
% cp -r /opt/arm/armpl*<ARMPL_Version>*Generic-AArch64* /some/writable/directory/examples
% cd /some/writeable/directory/examples

# Load the correct environment modules:
% module load Generic-AArch64/<OS>/<OS_Version>/suites/arm-compiler-for-hpc/<SUITE_Version>

# For the full version of the ARM Performance Libraries:
% module load Generic-AArch64/<OS>/<OS_Version>/armpl/<ARMPL_Version>

# For the evaluation version of the ARM Performance Libraries:
% module load Generic-AArch64/<OS>/<OS_Version>/armpl_time_limited/<ARMPL_Version>

# Build it:
% make

# To build with the 'armclang' compiler:
% make -e CC=armclang
# This overrides the 'CC' Makefile variable to use armclang instead of gcc

Uninstalling
============

For convenience, this package includes an "uninstall.sh" script at:

/opt/arm/arm-compiler-for-hpc-1.3*/uninstall.sh

This script attempts to uninstall all the packages supplied as part of
this suite. Note that this may not be possible if other packages, outside of
this suite, depend on them. You will need to uninstall the dependant packages
as well.

Please note that, if you use the --install-to option provided by the installer,
you will need to uninstall the packages by manually removing their directories.