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.4

Released: August 17, 2017

What's new in 1.4

Arm Compiler for HPC contains the following packages:

  • Arm C/C++/Fortran Compiler v1.4
  • Arm Performance Libraries v2.3.0
  • GNU GCC 7.1

New features and enhancements

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

  • Arm C/C++/Fortran Compiler 1.4:
    Support for some gfortran flags in armflang:
        -ffree-form
        -ffixed-form
        -ffixed-line-length-0
        -ffixed-line-length-132
        -ffixed-line-length-none
        -ffree-line-length-0
        -ffree-line-length-132
        -ffree-line-length-none
        -fconvert={native|swap|little-endian|big-endian}

    Compiler-rt runtime libraries are included.

    Support for '-mcpu=native' flag.  This will cause the compiler to automatically detect the CPU it is being run on and optimize accordingly. This supports a range of ARMv8-A based SoCs, including ThunderX2.


  • Arm Performance Libraries 2.3.0:
    A new version of the library that is supported with the Arm C/C++/Fortran Compiler.

    There is a new naming scheme to distinguish between 32-bit integer and 64-bit integer versions. These will be suffixed "_lp64" and "_ilp64" respectively. The existing library names will continue to be provided, but should now be considered deprecated and will be removed in a future version.

    The datatype used to describe "complex" numbers in the C headers has been changed to avoid clashes with the standard "complex" type modifier that may be included by using "complex.h" as well as "armpl.h". Instead Arm Performance Libraries now uses types called "armpl_singlecomplex_t" and "armpl_doublecomplex_t" to describe single and double precision complex variables.

    AArch64 implementations for Cortex-A53 and X-Gene 1 have been removed from this release. Please contact support-hpc-sw@arm.com if you have a HPC use case that requires these implementations.


  • GNU GCC 7.1:
    This package has been updated from the previously included 6.1 version. Arm Performance Libraries builds are now compatible with GCC 7.1 rather than the 6.1 version in the previous release.

  • Packaging: RPMs
    The Ubuntu supported version has been upgraded to 16.04.

Release Note for Release History 1.4

Arm Compiler for HPC 1.4
========================

Arm Compiler for HPC 1.4 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. This release includes version
2.3.0 of the Arm Performance Libraries which provides Fortran compatibility
with the Arm C/C++/Fortran Compiler. This release also includes GNU GCC 7.1 to
provide an optimal experience on the latest Arm HPC systems when using the Arm
Performance Libraries and GCC.

It contains the following packages:

- Arm C/C++/Fortran Compiler 1.4

  Arm's C/C++/Fortran Compiler for HPC.  This release includes a number of
  enhancements and bug fixes.

- Arm Performance Libraries 2.3.0

  The Arm Performance Libraries are 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-A57,
  Cortex-A72, ThunderX and ThunderX2CN99). This release includes builds of the
  library which are compatible with GNU GCC 7.1 as well as the Arm C/C++/Fortran
  Compiler. We recommend you use the version that matches your platform for the
  best performance. You can also use the generic AArch64 implementation by
  running:

  GCC 7.1.0 version:
  % module load Generic-AArch64/<OS>/<OS_Version>/gcc-7.1.0/<ARMPL_Name>/2.3.0

  Arm C/C++/Fortran Compiler version:
  % module load Generic-AArch64/<OS>/<OS_Version>/arm-hpc-compiler-1.4/<ARMPL_Name>/2.3.0

- GNU GCC 7.1

  A build of GNU's GCC 7.1 release is 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.4:
  Support for some gfortran flags in armflang:
    -ffree-form
    -ffixed-form
    -ffixed-line-length-0
    -ffixed-line-length-132
    -ffixed-line-length-none
    -ffree-line-length-0
    -ffree-line-length-132
    -ffree-line-length-none
    -fconvert={native|swap|little-endian|big-endian}

  Compiler-rt runtime libraries are included.

  Support for '-mcpu=native' flag.  This will cause the compiler to
  automatically detect the CPU it is being run on and optimize accordingly.
  This supports a range of ARMv8-A based SoCs, including ThunderX2.

- Arm Performance Libraries 2.3.0:
  A new version of the library that is supported with the Arm C/C++/Fortran
  Compiler.

  There is a new naming scheme to distinguish between 32-bit integer and 64-bit
  integer versions. These will be suffixed "_lp64" and "_ilp64" respectively.
  The existing library names will continue to be provided, but should now be
  considered deprecated and will be removed in a future version.

  The datatype used to describe "complex" numbers in the C headers has been
  changed to avoid clashes with the standard "complex" type modifier that may be
  included by using "complex.h" as well as "armpl.h". Instead Arm Performance
  Libraries now uses types called "armpl_singlecomplex_t" and
  "armpl_doublecomplex_t" to describe single and double precision complex
  variables.

  AArch64 implementations for Cortex-A53 and X-Gene 1 have been removed
  from this release. Please contact support-hpc-sw@arm.com if you have a HPC use
  case that requires these implementations.

- GNU GCC 7.1:
  This package has been updated from the previously included 6.1 version. Arm
  Performance Libraries builds are now compatible with GCC 7.1 rather than the
  6.1 version in the previous release.

- Packaging:
  The Ubuntu supported version has been upgraded to 16.04.

Bug fixes:

- Environment Modules and Lmod
  O-484: Fixed known issue from the previous release related to using Lmod
  as your environment module package.

- Arm C/C++/Fortran Compiler 1.4:
  S-2015 Fixed an issue related to using the Fortran Compiler with the -g
  option.

  Various small bug fixes and improvements.

- Arm Performance Libraries 2.3.0:
  Various small bug fixes and improvements.

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

This suite is supported on the following Linux platforms:

- AArch64 Redhat 7.2
- AArch64 Redhat 7.3
- AArch64 SUSE 12
- AArch64 Ubuntu 16.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.4*.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/<SUITE_Mod_Name>/1.4

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.4

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

- Arm Performance Libraries 2.3.0

  GCC 7.1.0 version:
  <Specific_Core>/<OS>/<OS_Version>/gcc-7.1.0/<ARMPL_Name>/2.3.0

  Arm C/C++/Fortran Compiler version:
  <Specific_Core>/<OS>/<OS_Version>/arm-hpc-compiler-1.4/<ARMPL_Name>/2.3.0

- GNU GCC 7.1

  Generic-AArch64/<OS>/<OS_Version>/gcc/7.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.4
  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.


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_Name>*<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_Name>-<ARMPL_Version>_Generic-AArch64_<OS>-<OS_Version>_arm-hpc-compiler_1.4_aarch64-linux/examples /some/writable/directory/examples
% cd /some/writeable/directory/examples

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

# Build it:
% make

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

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

/opt/arm/arm-compiler-for-hpc-1.4*/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.