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 Version 18.4 - latest update 18.4.2

Released: October 10, 2018

What's new in Version 18.4 - latest update 18.4.2

Arm Compiler for HPC 18.4 covers the following releases:

  • Arm C/C++/Fortran Compiler and Arm Performance Libraries version 18.4 - released 26th July 2018.
  • Arm C/C++/Fortran Compiler and Arm Performance Libraries version 18.4.1 - released 7th September 2018.
  • Arm C/C++/Fortran Compiler and Arm Performance Libraries version 18.4.2 - released 10th October 2018.

New features and enhancements

Arm C/C++/Fortran Compiler 18.4:

  • The -fstack-arrays option is enabled at the -Ofast optimization level.
  • Arm Fortran Compiler now supports the general-purpose ivdep directive, and partially supports the OpenMP-specific omp simd directive. These directives instruct the compiler to ignore memory dependencies and can enable a loop to be vectorized.
  • The Arm Fortran Compiler Reference guide is now available in /opt/arm/<package_name>/share.
  • The new vector procedure call standard has been implemented and is used by the SLEEF math library.

Arm C/C++/Fortran Compiler 18.4.1:

  • No new features or enhancements.

Arm C/C++/Fortran Compiler 18.4.2:

  • No new features or enhancements.

Arm Performance Libraries 18.4:

  • Performance improvements for batched CGEMM and ZGEMM.
  • Performance improvements for small-to-medium-sized SGEMM problems.
  • Significantly less time spent planning FFTW transforms for levels of rigor greater than FFTW_ESTIMATE.
  • Performance enhancements for complex-to-real FFTW transforms, especially multidimensional problems.
  • Libraries for Cortex-A57 and Cavium ThunderX are no longer provided.
  • New functions in libamath: sinf, cosf, sincosf (single precision).
  • Updated functions in libamath: exp, pow, log (double precision).

Arm Performance Libraries 18.4.1:

  • No new features or enhancements.

Arm Performance Libraries 18.4.2:

  • D-490 : The version of libamath built has been updated.

Bug fixes

Arm C/C++/Fortran Compiler 18.4:

  • H-52: Segfault on large array allocation.
  • H-87: Arm Fortran Compiler not vectorizing a loop.
  • H-92: Fixes for some debug issues related to subroutine arguments.
  • H-105: Flag (-E) to run only the preprocessor does not work in the Fortran compiler.
  • H-115: Problems with direct access I/O in Fortran programs.

Arm C/C++/Fortran Compiler 18.4.1:

  • H-317: In the previous release, when armflang was used to link objects without compilation, it generated unnecessary warnings about unused compilation flags. These warnings have been removed.
  • H-149: A problem caused by unaligned offsets in stack layout for SVE replicating loads, which caused the compiler to crash, has been resolved.

Arm C/C++/Fortran Compiler 18.4.2:

  • H-361 : Arm Fortran Compiler now handles the -fsave-optimization-record flag correctly.

Arm Performance Libraries 18.4:

  • H-126: Some multidimensional FFTW transforms return incorrect results.

Arm Performance Libraries 18.4.1:

  • No fixed issues

Arm Performance Libraries 18.4.2:

  • No fixed issues

Refer to the Release Note for further details.

Release Note for Release History Version 18.4 - latest update 18.4.2

Arm Compiler for HPC 18.4 (latest update 18.4.2)
=========================

Arm Compiler for HPC 18.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
18.4 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 18.4

  Arm Compiler is a Linux user-space C/C++/Fortran compiler tailored for
  scientific computing, HPC and enterprise workloads. This release includes a
  number of enhancements and bug fixes.

- Arm Performance Libraries 18.4

  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-A72,
  Qualcomm Falkor and ThunderX2CN99). This release includes builds of the
  libraries which are compatible with GNU GCC 7.1 as well as the Arm 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>/18.4.2

  Arm Compiler version:
  % module load Generic-AArch64/<OS>/<OS_Version>/arm-hpc-compiler-18.4/<ARMPL_Name>/18.4.2

- 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 18.4:
  - The -fstack-arrays option is enabled at the -Ofast optimization level.
  - Arm Fortran Compiler now supports the general-purpose ivdep directive, and partially supports
    the OpenMP-specific omp simd directive. These directives instruct the compiler to ignore memory
    dependencies and can enable a loop to be vectorized.
  - The Arm Fortran Compiler Reference guide is now available in /opt/arm/<package_name>/share.
  - The new vector procedure call standard has been implemented and is used by the SLEEF math
    library.

New features and enhancements:

- Arm C/C++/Fortran Compiler 18.4.1:
  - No new features or enhancements.

- Arm Performance Libraries 18.4:
  - Performance improvements for batched CGEMM and ZGEMM.
  - Performance improvements for small-to-medium-sized SGEMM problems.
  - Significantly less time spent planning FFTW transforms for levels of rigor greater than FFTW_ESTIMATE.
  - Performance enhancements for complex-to-real FFTW transforms, especially multidimensional problems.
  - Libraries for Cortex-A57 and Cavium ThunderX are no longer provided.
  - New functions in libamath: sinf, cosf, sincosf (single precision).
  - Updated functions in libamath: exp, pow, log (double precision).

- Arm Performance Libraries 18.4.1:
  - No new features or enhancements.

- Arm C/C++/Fortran Compiler 18.4.2:
  - No new features or enhancements.

- Arm Performance Libraries 18.4.2:
  - D-490 : The version of libamath built has been updated.

Bug fixes:
- Arm C/C++/Fortran Compiler 18.4:
  - H-52: Segfault on large array allocation.
  - H-87: Arm Fortran Compiler not vectorizing a loop.
  - H-92: Fixes for some debug issues related to subroutine arguments.
  - H-105: Flag -E to run only the preprocessor does not work in the Fortran compiler.
  - H-115: Problems with direct access I/O in Fortran programs.

- Arm C/C++/Fortran Compiler 18.4.1:
  - H-317 : In the previous release, when armflang was used to link objects without compilation, it generated unnecessary warnings about unused compilation flags. These warnings have been removed.
  -H-149 : A problem caused by unaligned offsets in stack layout for SVE replicating loads, which caused the compiler to crash, has been resolved.

- Arm Performance Libraries 18.4:
  - H-126: Some multidimensional FFTW transforms returning incorrect results.

- Arm Performance Libraries 18.4.1:
  - No fixed issues.

- Arm C/C++/Fortran Compiler 18.4.2:
  - H-361 : Arm Fortran Compiler now handles the -fsave-optimization-record flag correctly.

- Arm Performance Libraries 18.4.2:
  - No fixed issues.

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

This suite is supported on the following Linux platforms:

- AArch64 Redhat 7
- 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-18.4.2*.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. Local installs have
the same directory structure starting from the user's chosen
installation root.

Once you have obtained a license file from Arm, follow these steps to
make it available for use:
1. Create a directory called 'licenses' within the /opt/arm directory and
   copy your client license file to it.
2. If you are using Arm Forge or Arm Performance Reports, and you don't
   have a separate license for these tools, set the ALLINEA_LICENSE_DIR
   environment variable to point to /opt/arm/licenses .
3. If you have a floating license, add the server license file to
   the machine where Arm Licence Server is installed. Create a directory
   called 'licenses' within the /opt/arm/licenceserver directory and copy
   your license file to it. Restart Arm Licence Server to pick up the new
   floating license.

Please refer to the Arm Allinea Studio licensing page on the Arm Developer
website for more information about licensing:

https://developer.arm.com/products/software-development-tools/hpc/arm-allinea-studio/licensing

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>/18.4.2

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 18.4.2

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

- Arm Performance Libraries 18.4.2

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

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

- 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 18.4:
  - H-297: For Fortran, option -fopenmp-simd is not supported and the omp simd directive works only
    with -fopenmp option.

- Arm C/C++/Fortran Compiler 18.4.1:
  - H-310 : -fsimdmath is incompatible with a dynamic linker optimization known as 'lazy
            binding'.  When using -fsimdmath, we recommend you also add '-z now' to the
            compile/link flags, in order to disable this optimization during linking.  For
            more information, see Vector math routines.

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

Refer to the following topics to get started with Arm Compiler for HPC and Arm Performance Libraries:

Arm C/C++ Compiler:
  - https://developer.arm.com/products/software-development-tools/hpc/arm-cpp-compiler/getting-started
Arm Fortran Compiler:
  - https://developer.arm.com/products/software-development-tools/hpc/arm-fortran-compiler/getting-started
Arm Performance Libraries:
  - https://developer.arm.com/products/software-development-tools/hpc/arm-performance-libraries/getting-started

Refer to the Release History to see the changes between releases:
  - https://developer.arm.com/products/software-development-tools/hpc/arm-compiler-for-hpc/release-history

Access the Arm Fortran Compiler reference manual in /opt/arm/<package_name>/share or online at:
  - https://developer.arm.com/products/software-development-tools/hpc/arm-fortran-compiler/language-reference

Further documentation about all the components 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>*/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-18.4.2/<ARMPL_Name>/<ARMPL_Version>

# Build it:
% make

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

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

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