Release History

This page lists the Arm Allinea Studio release history.

To download and install the latest version of Arm Allinea Studio, see our downloads page and follow the installation steps given on the download page.

Details on Release versions and links to the Release Notes and Documentation of Arm C/C++ Compiler, Arm Fortran Compiler, and Arm Performance Libraries are provided below.

Arm Allinea Studio also includes Arm Forge (Release History). 

For more compatibility information, see our supported platforms topic.

Arm Allinea Studio

Version 21.0

Released: March 30, 2021

What's new in 21.0

Arm Allinea Studio 21.0.0 includes:

  • Arm Compiler for Linux 21.0 - Released 30th March 2021
  • Arm Forge 21.0.1 - Released 30th March 2021

 

Arm Compiler for Linux 21.0

Additions and changes:

  • 21.0:

    • Arm Compiler for Linux suite:
      • The module system has been overhauled in Arm Compiler for Linux 21.0. The module names have been simplified and shortened, modules are no longer visible until they are usable and the layout has been modified to take advantage of lmod features.

        To load Arm C/C++/Fortran Compiler, use 'module load arm21/21.0'. Loading this module then places the corresponding Arm Performance Library modules on the modulepath. To load the Arm Performance Library modules, use 'module load armpl-AArch64{-SVE}/21.0.0'.

      • The GCC toolchain that is packaged with Arm Compiler for Linux has been updated to GCC 10.2.0.

      • Support has been added for Ubuntu 20.04 LTS.

      • Arm Compiler for Linux no longer provides installers for SLES12 or Ubuntu 16.04 LTS.

    • Arm C/C++/Fortran Compiler:
      • Added support for the following CPUs:

        • Neoverse N2
        • Neoverse V1

        To enable architectural optimizations for Neoverse N2, use '-mcpu=neoverse-n2', for Neoverse V1, use '-mcpu=neoverse-v1'.

      • Arm Compiler for Linux 21.0 is based on Clang 11. The following changes should be noted:

        • The default behavior of the '-f[no-]common' option has changed. In Arm Compiler for Linux 21.0, the default is '-fno-common'. C/C++ code that uses tentative definitions as definitions of a variable in multiple translation units, will trigger multiple-definition linker errors. Generally, this error occurs when the use of the 'extern' keyword is omitted in the declaration of a variable in a header file. In some cases, no specific translation unit provides a definition of the variable. To restore the Arm Compiler for Linux 20.3 behavior, use '-fcommon'.

        • The default C language standard used when '-std=' is not specified has been upgraded from 'gnu11' to 'gnu17'.

        • The default OpenMP standard has been upgraded to 5.0, for C/C++ compilation. To lower the support to OpenMP 4.5, use '-fopenmp-version=45'. The maximum standard level that is supported in Fortran code remains at OpenMP 4.5.

          More details are available in the clang 11 release notes at:
          https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html

      • Arm Compiler for Linux implements changes to the Arm Architecture Vector Procedure Call Standard (AAVPCS) relating to the passing of vector parameters. The intent is to enable an optimization, by the dynamic loader called lazy binding, when a shared library is first loaded. These changes affect functions with signatures that contain scalable vector types defined as part of arm_sve.h, or functions that make explicit use of the function  attribute 'aarch64_vector_pcs'.

        For the optimization to work, the dynamic loader must also be compliant to the AAVPCS. Specifically, the dynamic loader must correctly handle 'STO_AARCH64_VARIANT_PCS st_other" symbol data. The required support is present in the latest glibc versions starting 2.26, and patches later than December 2020.

        Using a combination of shared libraries and a dynamic loader that are incompatible with regards AAVPCS compliance, can result in runtime bugs in your program because of the corruption of vector registers when crossing function call boundaries. These bugs have symptoms that are hard to characterize and they can be hard to identify. As a limited mitigation, Arm Compiler for Linux temporarily disables lazy binding when compiling for SVE. This means that libraries that are built by Arm Compiler for Linux should work with older dynamic loaders. For full mitigation, set the 'LD_BIND_NOW=1' environment variable, which disables lazy binding for all libraries.

      • Directive support in Arm Fortran Compiler has been expanded to include:

      • The following corrections have been made to Arm Compiler for Linux Arm C Language Extensions (ACLE) support:

        • Removed support for the deprecated 'svcdot' function with unsigned arguments, and accessing individual elements of ACLE vector structs using the '.' operator.

        • Removed support for the 'vceqz_p16', 'vceqzq_p16', 'vmlaq_n_f64', and 'vmlsq_n_f64' Neon intrinsics.

        • Removed support for the '__sizeless_struct' C/C++ language extension. A migration path for users of this option to place SVE ACLE types inside structs will be available in a future version of Arm Compiler for Linux.

        • The arm_sve.h header file has been corrected to define 'svpattern' rather than 'sv_pattern', and 'svprfop' rather than 'sv_prfop'. Both types are now correctly defined as enum types.

    • Arm Performance Libraries:
      • Arm Performance Libraries now supports all real-to-real transform functions defined in the FFTW3 interface. Previously, the planner functions for these types of transforms returned NULL, indicating that they were unavailable.

      • Added support for ?GEMMT BLAS extension routines for all types, performing matrix-matrix multiplication and updating the lower or upper triangular part of C only.

      • Added a new suite of routines that are optimized for large batches of small linear algebra problems. Interfaces for the following real and double precision problems are provided:

        • BLAS: DDOT, DGER, DGEMM, DGEMV, DSCAL, DTRMM, DTRSM, and DTRSV
        • LAPACK: DGEQR (QR), DGETRF (LU), and DPOTRF (Cholesky)
        • DORMQR and DORGQR (for multiplying and generating Q)
        • Utility routines for packing and unpacking matrices to and from the new batched data layout

        An example and full documentation are provided.

      • Improved performance for:

        • BLAS level 1 routines: ?IAMAX, ?NRM2, ?ASUM, and ?DOT
        • BLAS level 2 routines: ?HBMV, ?SBMV, ?TBMV, ?SYR, and ?SYR2
        • BLAS level 3 routines: ?TRSM and [SD]GEMM
        • LAPACK routines: ?POTRF and ?GETRF (for small problems)
        • General small problems

      • Vector performance improvements in libamath:

        • Neon functions: atan, atanf, erf, erff, exp2, exp2f, exp10, and exp10f
        • SVE functions: atan, erff, cos, cosf, pow, sin, sincos, and sincosf

      • Arm Performance Libraries are no longer packaged with separate libraries for individual microarchitectures.  We now provide two choices of library, one which contains kernels for SVE cores and one for non-SVE cores. Automatic selection of the most appropriate kernels for the microarchitecture occurs at runtime.

        Arm Compiler for Linux can use the appropriate library when either the '-mcpu=<target>' or  '-march=<architecture>' options are used together with the '-armpl' option. '<target>' is a target CPU name. To use the host CPU, use 'native'. The '<architecture>' is a list of available architecture features. If any of the features enable SVE, the SVE version of library is used.

      • The GCC version of the library is now compatible with GCC 10.2.0, instead of 9.3.0.

Resolved issues:

  • 21.0:

    • Arm Compiler for Linux suite:
      • The disk space required to install Arm Compiler for Linux is reduced in version 21.0. The installer no longer allows for a partial installation using the '--only-install-microarchitectures' option. The installer options '--only-install-microarchitectures' and '--list-available-microarchitectures' are no longer supported.

      • Fixed an issue where installations to a user-defined, non-default location could prevent GCC from locating its runtime libraries.

      • Support for relocating modulefiles from the install location to a directory of your choosing, and for using symlinks with modulefiles, has been improved in this release. The modulefiles can now be relocated by moving the moduledeps, modulefiles, and moduleglobals directories as a group. For a more complete explanation of the limitations, see the compiler reference guides:

        https://developer.arm.com/documentation/101380/2100/Troubleshoot/Error-moving-Arm-Compiler-for-Linux-modulefiles (Fortran)

        or

        https://developer.arm.com/documentation/101458/2100/Troubleshoot/Error-moving-Arm-Compiler-for-Linux-modulefiles (C/C++).

      • An issue that caused the 'module swap' command to fail when using newer versions of the module builtin, requiring you to unload the old modulefile before loading the new modulefile, has been fixed. The 'module swap' command now works as expected.

    • Arm C/C++/Fortran Compiler:
      • Fixed a C++ code generation issue for floating-point multiply reductions that use SVE instructions. Previously, the result could be discarded and 'NaN' reported. The correct result is now returned.

      • Fixed an armflang internal compiler error which could occur when compiling the YAXT application.

      • Fixed an armflang internal compiler error which could occur when compiling Fortran code that used COMPLEX types.

      • Fixed an issue in armflang with USE statements that are used in the BigDFT application.

      • Fixed an issue with armflang which could cause a 'Too few data constants in initialization statement' error when compiling nested implied do-loop array initializers in librsb.

      • Arm C/C++/Fortran Compiler for Linux 21.0 defines the following macros that can be used to guard code based on compiler version:

        • __ARM_LINUX_COMPILER__ // always '1'
        • __armclang_major__ // integer (for example '21' for version 21.0)
        • __armclang_minor__ // integer (for example '0' for version 21.0)
        • __armclang_version__ // human readable version string (for example '21.0' for version 21.0)

        The following macros are no longer defined as of Arm Compiler for Linux 21.0:

        • __ARM_HPC_COMPILER, use __ARM_LINUX_COMPILER__ instead
        • __ARM_HPC_COMPILER_VERSION__, use __armclang_version__ instead
        • __ARM_HPC_COMPILER_BUILD__, use __ARM_LINUX_COMPILER_BUILD__ instead

        The predefined macros that are supported by Arm C/C++ Compiler are now documented in:
         
        https://developer.arm.com/documentation/101458/2100/Optimize/Predefined-macro-support

        The predefined macros that are supported by Arm Fortran Compiler are now documented in:

        https://developer.arm.com/documentation/101380/2100/Fortran-language-reference/Predefined-macro-support

    • Arm Performance Libraries:
      • Prototypes are now available in armpl.h for the following LAPACKE functions:

        • lapacke_?geqpf
        • lapacke_?geqpf_work
        • lapacke_?ggsvd
        • lapacke_?ggsvd_work
        • lapacke_?ggsvp
        • lapacke_?ggsvp_work

Open technical issues:

  • 21.0:

    • There are no open technical issues at the time of this release.

Arm Forge 21.0

Arm DDT additions and changes

21.0.1

  • Added support for Arm Compiler for Linux 21.0.
  • Documented a workaround for startup issues with recent versions of SLURM.

Arm DDT resolved issues

21.0.1

  • [FOR-11503] Fixed intermittent remote connect crash.

Arm MAP additions and changes

21.0.1

  • Added support for Arm Compiler for Linux 21.0.
  • Documented a workaround for startup issues with recent versions of SLURM.

Arm MAP resolved issues

21.0.1

  • [FOR-10699] Fixed an allocation issue in MAP which caused the program being profiled to crash on rare occasions.
  • [FOR-11503] Fixed intermittent remote connect crash.
  • [FOR-12576] Adjusted detection of OpenMP Regions with Arm Compiler for Linux.

Arm Performance Reports additions and changes

21.0.1

  • Added support for Arm Compiler for Linux 21.0.
  • Documented a workaround for startup issues with recent versions of SLURM.

Arm Performance Reports resolved issues

21.0.1

  • None in this release.

Deprecated features

The following features remain deprecated since the release of version 21.0, and might be removed in a future version:

  • VisIt Visualization.
  • Automatically adding breakpoints and tracepoints based on version control information.
  • Support for the IPMI energy agent.
  • Support for PAPI metrics in MAP. Arm recommends using perf metrics instead.
  • Support for Python 2.x.x.
  • Support for Open MPI 3.x.x.
  • Support for Red Hat Enterprise Linux 7.x on aarch64 and ppc64le.
  • Support for Ubuntu 16.04.

Known issues

Please refer to the known issues.

Release Note for Release History 21.0

The ordering of the Release Notes are:

1) Arm Compiler for Linux 21.0 Release Note
2) Arm Forge 21.0.1 Release Note

 

Arm Compiler for Linux 21.0 Release Note
========================================

Non-Confidential
Copyright © 2015-2021, Arm Limited (or its affiliates). All rights reserved.

Non-Confidential Proprietary Notice
===================================

This document is protected by copyright and other related rights and the
practice or implementation of the information contained in this document may be
protected by one or more patents or pending patent applications. No part of this
document may be reproduced in any form by any means without the express prior
written permission of Arm. No license, express or implied, by estoppel or
otherwise to any intellectual property rights is granted by this document
unless specifically stated.

Your access to the information in this document is conditional upon your
acceptance that you will not use or permit others to use the information for
the purposes of determining whether implementations infringe any third party
patents.

THIS DOCUMENT IS PROVIDED “AS IS”. ARM PROVIDES NO REPRESENTATIONS AND NO
WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE
IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT
OR FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE DOCUMENT. For the
avoidance of doubt, Arm makes no representation with respect to, and has
undertaken no analysis to identify or understand the scope and content of,
patents, copyrights, trade secrets, or other rights.

This document may include technical inaccuracies or typographical errors.

TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY
DAMAGES, INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL,
INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS
OF THE THEORY OF LIABILITY, ARISING OUT OF ANY USE OF THIS DOCUMENT, EVEN IF
ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

This document consists solely of commercial items. You shall be responsible for
ensuring that any use, duplication or disclosure of this document complies fully
with any relevant export laws and regulations to assure that this document or
any portion thereof is not exported, directly or indirectly, in violation of
such export laws. Use of the word “partner” in reference to Arm’s customers is
not intended to create or refer to any partnership relationship with any other
company. Arm may make changes to this document at any time and without notice.

If any of the provisions contained in these terms conflict with any of the
provisions of any click through or signed written agreement covering this
document with Arm, then the click through or signed written agreement prevails
over and supersedes the conflicting provisions of these terms. This document may
be translated into other languages for convenience, and you agree that if there
is any conflict between the English version of this document and any
translation, the terms of the English version of the Agreement shall prevail.

The Arm corporate logo and words marked with ® or ™ are registered trademarks
or trademarks of Arm Limited (or its affiliates) in the US and/or elsewhere. All
rights reserved. Other brands and names mentioned in this document may be the
trademarks of their respective owners. Please follow Arm’s trademark usage
guidelines at http://www.arm.com/company/policies/trademarks.

Copyright © 2015-2021, Arm Limited (or its affiliates). All rights reserved.

Arm Limited. Company 02557590 registered in England.

110 Fulbourn Road, Cambridge, England CB1 9NJ.

(LES-PRE-20349)

Confidentiality Status
----------------------

This document is Non-Confidential. The right to use, copy and disclose this
document may be subject to license restrictions in accordance with the terms
of the agreement entered into by Arm and the party that Arm delivered this
document to.

Unrestricted Access is an Arm internal classification.

Product Status
--------------

The information in this document is Final, that is for a developed product.

Web Address
-----------

https://developer.arm.com

Progressive terminology commitment
----------------------------------

Arm values inclusive communities. Arm recognizes that we and our industry have
used terms that can be offensive. Arm strives to lead the industry and create
change.

We believe that this document contains no offensive terms. If you find offensive
terms in this document, please email terms@arm.com.

Contents
========

- Conventions
- Release overview
- Release contents
- Get started
- Support
- Release History

Conventions
===========

The following subsections describe conventions used in Arm documents.

Glossary
--------

The Arm Glossary is a list of terms that are used in Arm documentation, together
with definitions for those terms. The Arm Glossary does not contain terms that
are industry standard unless the Arm meaning differs from the generally accepted
meaning.

See the Arm Glossary for more information: https://developer.arm.com/glossary.

Release overview
================

Product description
-------------------

The Arm Compiler for Linux 21.0 suite provides a complete
compiling environment for natively developing and tuning your server and HPC
applications on Armv8-A based platforms. Arm Compiler for Linux 21.0
includes support for targets that implement the Scalable Vector Extension (SVE)
and Scalable Vector Extension version two (SVE2) for Armv8-A AArch64.

The suite contains the following packages:

- Arm C/C++/Fortran Compiler 21.0

  Arm Compiler is a Linux user-space C/C++ and Fortran compiler tailored for
  scientific computing, HPC, and enterprise workloads.

- Arm Performance Libraries 21.0.0

  Two Arm Performance Libraries packages are provided, one that is optimized for
  Armv8-A AArch64 Neon-based implementations, and one that is optimized for
  Armv8-A AArch64 SVE-based implementations. Both packages are compatible with
  Arm C/C++/Fortran Compiler 21.0 and GCC 10.2.0.

- GCC 10.2.0

  For convenience, and to provide the optimal experience of using Arm
  Performance Libraries and GCC on the latest Arm server and HPC systems, a
  build of GCC 10.2.0 is provided. The GCC 10.2.0 build is
  also provided for OpenMP/libgfortran compatibility with Arm Performance
  Libraries.

  As a GNU tool suite, the GPL-licensed source code can be downloaded
  separately.

Release Status
--------------

This is the 21.0 release of the Arm Compiler for Linux software.

These deliverables are being released under the terms of the agreement between
Arm and each licensee (the "Agreement"). All planned verification and
validation is complete.
The release is suitable for volume production under the terms of the Agreement.

Release contents
================

The following sub-sections describe:
- The product parts that are delivered as part of this release.
- Any changes since the previous release.
- Any known issues and limitations that exist at the time of this release.

Deliverables
------------

- Arm C/C+/Fortran Compiler 21.0
- Arm Performance Libraries 21.0.0
- GCC 10.2.0
- Release Notes (this document)
- Documentation

  Product documentation is available in
  <install_location>/<package_name>/share, and on the Arm Developer website at:

  https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/resources

  Documentation may change between product releases. For the latest
  documentation bundle, check the delivery platform.

  Arm tests its PDFs only in Adobe Acrobat and Acrobat Reader. Arm cannot
  guarantee the quality this document when used with any other PDF reader.
  A suitable file reader can be downloaded from Adobe at http://www.adobe.com


Differences from previous release
---------------------------------

Arm Compiler for Linux 21.0 includes various internal changes that
resolve defects and improve performance.

The following subsections describe the significant differences from the previous
release of Arm Compiler for Linux.

Additions and changes:
~~~~~~~~~~~~~~~~~~~~~~

This section describes the new features or components added, or any
significant technical changes to features or components, in this release.

- Arm Compiler for Linux suite 21.0:

  - The module system has been overhauled in Arm Compiler for Linux 21.0. The module names have been simplified and shortened, modules are no longer visible until they are usable and the layout has been modified to take advantage of lmod features.

    To load Arm C/C++/Fortran Compiler, use 'module load arm21/21.0'. Loading this module then places the corresponding Arm Performance Library modules on the modulepath. To load the Arm Performance Library modules, use 'module load armpl-AArch64{-SVE}/21.0.0'.

  - The GCC toolchain that is packaged with Arm Compiler for Linux has been updated to GCC 10.2.0.

  - Support has been added for Ubuntu 20.04 LTS.

  - Arm Compiler for Linux no longer provides installers for SLES12 or Ubuntu 16.04 LTS.

- Arm C/C++/Fortran Compiler 21.0:

  - Added support for the following CPUs:

    * Neoverse N2
    * Neoverse V1

    To enable architectural optimizations for Neoverse N2, use '-mcpu=neoverse-n2', for Neoverse V1, use '-mcpu=neoverse-v1'.

  - Arm Compiler for Linux 21.0 is based on Clang 11. The following changes should be noted:

    * The default behavior of the '-f[no-]common' option has changed. In Arm Compiler for Linux 21.0, the default is '-fno-common'. C/C++ code that uses tentative definitions as definitions of a variable in multiple translation units, will trigger multiple-definition linker errors. Generally, this error occurs when the use of the 'extern' keyword is omitted in the declaration of a variable in a header file. In some cases, no specific translation unit provides a definition of the variable. To restore the Arm Compiler for Linux 20.3 behavior, use '-fcommon'.

    * The default C language standard used when '-std=' is not specified has been upgraded from 'gnu11' to 'gnu17'.

    * The default OpenMP standard has been upgraded to 5.0, for C/C++ compilation. To lower the support to OpenMP 4.5, use '-fopenmp-version=45'. The maximum standard level that is supported in Fortran code remains at OpenMP 4.5.

    More details are available in the clang 11 release notes at:
    https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html

  - Arm Compiler for Linux implements changes to the Arm Architecture Vector Procedure Call Standard (AAVPCS) relating to the passing of vector parameters. The intent is to enable an optimization, by the dynamic loader called lazy binding, when a shared library is first loaded. These changes affect functions with signatures that contain scalable vector types defined as part of arm_sve.h, or functions that make explicit use of the function attribute 'aarch64_vector_pcs'.

    For the optimization to work, the dynamic loader must also be compliant to the AAVPCS. Specifically, the dynamic loader must correctly handle 'STO_AARCH64_VARIANT_PCS st_other" symbol data. The required support is present in the latest glibc versions starting 2.26, and patches later than December 2020.

    Using a combination of shared libraries and a dynamic loader that are  incompatible with regards AAVPCS compliance, can result in runtime bugs in your program because of the corruption of vector registers when crossing function call boundaries. These bugs have symptoms that are hard to characterize and they can be hard to identify. As a limited mitigation, Arm Compiler for Linux temporarily disables lazy binding when compiling for SVE. This means that libraries that are built by Arm Compiler for Linux should work with older dynamic loaders. For full mitigation, set the 'LD_BIND_NOW=1' environment variable, which disables lazy binding for all libraries.

  - Directive support in Arm Fortran Compiler has been expanded to include:

    * !$mem prefetch directive (see https://developer.arm.com/documentation/101380/2100/Optimize/Directives/prefetch)

    * !$ dir unroll(n) directive with an integer argument indicating the unrolling factor (see https://developer.arm.com/documentation/101380/2100/Optimize/Directives/unroll)

  - The following corrections have been made to Arm Compiler for Linux Arm C Language Extensions (ACLE) support:

    * Removed support for the deprecated 'svcdot' function with unsigned arguments, and accessing individual elements of ACLE vector structs using the '.' operator.

    * Removed support for the 'vceqz_p16', 'vceqzq_p16', 'vmlaq_n_f64', and 'vmlsq_n_f64' Neon intrinsics.

    * Removed support for the '__sizeless_struct' C/C++ language extension. A migration path for users of this option to place SVE ACLE types inside structs will be available in a future version of Arm Compiler for Linux.

    * The arm_sve.h header file has been corrected to define 'svpattern' rather than 'sv_pattern', and 'svprfop' rather than 'sv_prfop'. Both types are now correctly defined as enum types.

- Arm Performance Libraries 21.0.0:

  - Arm Performance Libraries now supports all real-to-real transform functions defined in the FFTW3 interface. Previously, the planner functions for these types of transforms returned NULL, indicating that they were unavailable.

  - Added support for ?GEMMT BLAS extension routines for all types, performing matrix-matrix multiplication and updating the lower or upper triangular part of C only.

  - Added a new suite of routines that are optimized for large batches of small linear algebra problems. Interfaces for the following real and double precision problems are provided:

    * BLAS: DDOT, DGER, DGEMM, DGEMV, DSCAL, DTRMM, DTRSM, and DTRSV
    * LAPACK: DGEQR (QR), DGETRF (LU), and DPOTRF (Cholesky)
    * DORMQR and DORGQR (for multiplying and generating Q)
    * Utility routines for packing and unpacking matrices to and from the new batched data layout

    An example and full documentation are provided.

  - Improved performance for:

    * BLAS level 1 routines: ?IAMAX, ?NRM2, ?ASUM, and ?DOT
    * BLAS level 2 routines: ?HBMV, ?SBMV, ?TBMV, ?SYR, and ?SYR2
    * BLAS level 3 routines: ?TRSM and [SD]GEMM
    * LAPACK routines: ?POTRF and ?GETRF (for small problems)
    * General small problems

  - Vector performance improvements in libamath:

    * Neon functions: atan, atanf, erf, erff, exp2, exp2f, exp10, and exp10f
    * SVE functions: atan, erff, cos, cosf, pow, sin, sincos, and sincosf

  - Arm Performance Libraries are no longer packaged with separate libraries for individual microarchitectures.  We now provide two choices of library, one which contains kernels for SVE cores and one for non-SVE cores. Automatic selection of the most appropriate kernels for the microarchitecture occurs at runtime.

    Arm Compiler for Linux can use the appropriate library when either the '-mcpu=<target>' or  '-march=<architecture>' options are used together with the '-armpl' option. '<target>' is a target CPU name. To use the host CPU, use 'native'. The '<architecture>' is a list of available architecture features. If any of the features enable SVE, the SVE version of library is used.

  - The GCC version of the library is now compatible with GCC 10.2.0, instead of 9.3.0.

Resolved issues:
~~~~~~~~~~~~~~~~

Describes any technical issues that are resolved in this release.

- Arm Compiler for Linux suite 21.0:

  - The disk space required to install Arm Compiler for Linux is reduced in version 21.0. The installer no longer allows for a partial installation using the '--only-install-microarchitectures' option. The installer options '--only-install-microarchitectures' and '--list-available-microarchitectures' are no longer supported.

  - Fixed an issue where installations to a user-defined, non-default location could prevent GCC from locating its runtime libraries.

  - Support for relocating modulefiles from the install location to a directory of your choosing, and for using symlinks with modulefiles, has been improved in this release. The modulefiles can now be relocated by moving the moduledeps, modulefiles, and moduleglobals directories as a group. For a more complete explanation of the limitations, see the compiler reference guides:

https://developer.arm.com/documentation/101380/2100/Troubleshoot/Error-moving-Arm-Compiler-for-Linux-modulefiles (Fortran)

or

https://developer.arm.com/documentation/101458/2100/Troubleshoot/Error-moving-Arm-Compiler-for-Linux-modulefiles (C/C++).

  - An issue that caused the 'module swap' command to fail when using newer versions of the module builtin, requiring you to unload the old modulefile before loading the new modulefile, has been fixed. The 'module swap' command now works as expected.

- Arm C/C++/Fortran Compiler 21.0:

  - Fixed a C++ code generation issue for floating-point multiply reductions that use SVE instructions. Previously, the result could be discarded and 'NaN' reported. The correct result is now returned.

  - Fixed an armflang internal compiler error which could occur when compiling the YAXT application.

  - Fixed an armflang internal compiler error which could occur when compiling Fortran code that used COMPLEX types.

  - Fixed an issue in armflang with USE statements that are used in the BigDFT application.

  - Fixed an issue with armflang which could cause a 'Too few data constants in initialization statement' error when compiling nested implied do-loop array initializers in librsb.

  - Arm C/C++/Fortran Compiler for Linux 21.0 defines the following macros that can be used to guard code based on compiler version:

    * __ARM_LINUX_COMPILER__ // always '1'
    * __armclang_major__ // integer (for example '21' for version 21.0)
    * __armclang_minor__ // integer (for example '0' for version 21.0)
    * __armclang_version__ // human readable version string (for example '21.0' for version 21.0)

    The following macros are no longer defined as of Arm Compiler for Linux 21.0:

    * __ARM_HPC_COMPILER, use __ARM_LINUX_COMPILER__ instead
    * __ARM_HPC_COMPILER_VERSION__, use __armclang_version__ instead
    * __ARM_HPC_COMPILER_BUILD__, use __ARM_LINUX_COMPILER_BUILD__ instead

    The predefined macros that are supported by Arm C/C++ Compiler are now documented in:

    https://developer.arm.com/documentation/101458/2100/Optimize/Predefined-macro-support

    The predefined macros that are supported by Arm Fortran Compiler are now documented in:

    https://developer.arm.com/documentation/101380/2100/Fortran-language-reference/Predefined-macro-support

- Arm Performance Libraries 21.0.0:

  - Prototypes are now available in armpl.h for the following LAPACKE functions:

    * lapacke_?geqpf
    * lapacke_?geqpf_work
    * lapacke_?ggsvd
    * lapacke_?ggsvd_work
    * lapacke_?ggsvp
    * lapacke_?ggsvp_work

Known limitations
-----------------

There are no open technical issues at the time of this release.

Get started
===========

This section describes information to help you get started with accessing,
setting up, and using Arm Compiler for Linux.

For more information, see the Get Started information on the Arm Developer
website:

https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/resources/get-started

Licensing information
---------------------

Arm Compiler for Linux is available as part of Arm Allinea Studio,
and requires a valid license to run:

* For more information about Arm Allinea Studio licensing, see:

  https://developer.arm.com/tools-and-software/server-and-hpc/arm-allinea-studio/licensing

* To request a license, go to:

  https://store.developer.arm.com/store/high-performance-computing-hpc-tools/arm-allinea-studio

Once you have obtained a license file from Arm, follow these steps to make it
available for use.

Note: If you have a floating license, you must first download and install
Arm Licence Server:

https://developer.arm.com/tools-and-software/server-and-hpc/help/help-and-tutorials/system-administration/licensing/arm-licence-server

1. Save your client, named user, or evaluation license:

   - If you chose to install to the default installation directory, create a
     directory called 'licenses' in /opt/arm/ and copy your client license file
     to it.

   - If you chose to install to a custom installation directory, create a
     directory called 'licenses' in <install_location>/ and copy your client
     license file to it. Set the ARM_LICENSE_DIR environment variable to
     <install_location>/licenses.

2. If you are using Arm Forge or Arm Performance Reports, and you do not have a
   separate license for these tools, set the ARM_LICENSE_DIR environment
   variable to point to <install_location>/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'
   in the <install_location>/licenceserver directory and copy your license
   file to it. To enable the new floating license, restart Arm Licence Server.

Prerequisites
-------------

If any of the following tools are not already installed by your Linux
distribution, you must install them before installing Arm Compiler for Linux:

- Python (version 2.7 or later)
  To ensure you have the necessary version of Python for your system, install
  Python using the appropriate package manager for your OS.
- C Libraries:
   - SLES and RHEL: glibc-devel
   - Ubuntu:        libc6-dev

You must have at least 3 GB of free hard disk space to both download and unpack
the Arm Compiler for Linux package. You must also have an additional 5 GB of
free space to install the package.

Download the product
--------------------

Arm delivers the files through the Arm Developer website:

https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-allinea-studio

Unpack the product
------------------

To unpack the package, extract the tar file contents using a tar utility:

  tar -xvf <package_name>.tar

Directory structure:
--------------------

Shows the top-level directory structure of this installer package, which is
available after you unpack the bundle:

  license_terms/
  arm-compiler-for-linux-21.0*.sh
  RELEASE_NOTES.txt

Install the product
-------------------

To install Arm Compiler for Linux, run the installation script as a privileged
user and pass any options to configure the installation:

  ./arm-compiler-for-linux-21.0*.sh <option> <option>

Some common installation options are:

- For a headless installation and to automatically accept the EULA, use
  the '--accept' option.
- To install to an alternate location to the default, use the
  '--install-to <install_location>' option.

For a full list of supported installation options pass the '-h' or '--help'
options to the installer script.

To learn more about installing Arm Compiler for Linux, as part of Arm Allinea
Studio, see:

https://developer.arm.com/tools-and-software/server-and-hpc/arm-allinea-studio/installation

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

All the packages are unpacked to <install_location>/<package_name> with
environment modulefiles available under <install_location>/modulefiles.
The default installation location is /opt/arm/. Local installs have the
same directory structure starting from your chosen installation root.

RPM and DEB files
-----------------

The install packages contain RPM (.rpm) files, for Red Hat-based Linux
distributions, or DEB (.deb) files, for Debian-based Linux distributions.

To extract the .rpm or .deb files from the installer, run the installer script
with the '-s' or '--save-packages-to <directory_location>' option. If
<directory_location> is not an empty directory, you also need to include the
'-f' or '--force' option. The installer script requires you to accept
the EULA. If you accept the EULA, the .rpm or .deb files extract to
<directory_location>.

RPM files are signed by Arm's HPC GPG key. DEB files are not signed. To verify
RPM files, you can download and import the Arm's HPC GPG key, and check the
signatures:

1. Download the Arm HPC GPG public key from:

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

2. Import the GPG key, run:

     rpm --import GPG-PUB-KEY-ARM-HPC-SW-TOOLS.PUB

3. Check the signature of an .rpm file, run:

     rpm -K <rpm_file>

To install an RPM file, use 'rpm -i <rpm_file>'. To install a DEB file, use
'dpkg -i <deb_file>'.

Note: Arm does not recommend that you install directly from the .rpm or .deb
files. Only experienced users who are comfortable with this type of installation
route should attempt to install the Arm Compiler for Linux package using this
method.

Run the product
---------------

1. Load the environment module:

   * For Arm C/C++/Fortran Compiler, use:

       module load arm21/21.0

     To also use Arm Performance Libraries, include the ``-armpl`` and either
     the ``-march=<arg>`` or ``-mcpu=<arg>`` compiler options in your compile
     and link command lines. The combination of these commands allows Arm
     C/C++/Fortran Compiler to determine the appropriate version of Arm
     Performance Libraries for your system at link time.

   * For GCC 10.2.0 only, use:

       module load gnu10/10.2.0

   * For GCC 10.2.0 with Arm Performance Libraries, use:

       module load gnu10/10.2.0
       module load armpl-AArch64{-SVE}/21.0.0

2. Generate your executable binary.

   To generate an executable binary with Arm Compiler for Linux, compile your
   program with Arm C/C++/Fortran Compiler and specify any options ([options]),
   the output binary name (-o <binary>), and the input file (<input>):

     {armclang|armclang++|armflang} [options] -o <binary> <input>

   Refer to the GCC documentation to see the equivalent command syntax for
   the GCC compiler.

Examples
--------

Example code is included in this suite as part of Arm Performance
Libraries. This code can be found at:

<install_location>/<ARMPL_Name>*<ARMPL_Version>*/examples

Examples that use, and do not use, SVE are included for each of Arm
C/C++/Fortran Compiler and GCC.

To build the examples:

* For Arm Compiler for Linux:

  1. Copy the examples somewhere writeable:

       cp -r <install_location>/armpl-21.0.0_AArch64_*arm-linux-compiler*/examples ./
       cd examples

     To copy the SVE examples, replace 'AArch64' with 'AArch64-SVE' in the copy
     command.

  2. Load the Arm Compiler for Linux environment module:

       module load arm21/21.0

  3. Build the examples:

       make

* For GCC:

  1. Copy the examples somewhere writeable:

       cp -r <install_location>/armpl-21.0.0_AArch64_*gcc*/examples ./
       cd examples

     To copy the SVE examples, replace 'AArch64' with 'AArch64-SVE' in the copy
     command.

  2. Load the GCC environment modules:

       module load gnu10/10.2.0
       module load armpl-AArch64/21.0.0

     To load the SVE variant of the libraries, replace 'AArch64' with
     'AArch64-SVE' in the module load command.

  3. Build the examples:

       make

Uninstall
---------

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

  <install_location>/arm-compiler-for-linux-21.0*/uninstall.sh

This script attempts to uninstall all the components supplied as part of
Arm Compiler for Linux. However, if other packages outside of this product
depend on the GCC component, GCC will not be uninstalled.

If you require support when uninstalling any version of Arm Compiler for Linux,
contact support-hpc-sw@arm.com.

Support
=======

Arm Compiler for Linux documentation is available in
<install_location>/<package_name>/share, or on the Arm Developer website:

https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/resources

If you have any issues with the installation, content or use of this release,
create a ticket on https://support.developer.arm.com. Arm will respond
as soon as possible.

These deliverables are being released under the terms of the agreement between
Arm and each licensee (the “Agreement”). All planned verification and
validation is complete. The release is suitable for volume production under
the terms of the Agreement.

Note: Support for this release of the product is only provided by Arm to
partners who have a current support and maintenance contract for the product.

OS
--

This suite is supported on the following Linux platforms:

- AArch64 RHEL 7 and 8
- AArch64 SLES 15
- AArch64 Ubuntu 18.04 and 20.04

Full information about the platforms supported by Arm Compiler for Linux is
available on the Arm Developer website:

https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/resources/supported-platforms

Release history
===============

A full release history (with release notes) for Arm Compiler for Linux is
available on the Arm Developer website:

https://developer.arm.com/tools-and-software/server-and-hpc/arm-allinea-studio/release-history

 

Arm Forge 21.0.1 Release Note
================================

Copyright (c) 2017-2021 Arm Limited (or its affiliates). All rights reserved.
Copyright (c) 2002-2017 Allinea Software Limited.

See the end of this document for Arm proprietary notice, confidentiality status, and general product status information.


Contents
========

- Release overview
- Release contents
- Get started
- Support
- Release history
- Proprietary notices
- Glossary


Release overview
================

Product description
-------------------

Arm Forge 21.0.1 combines Arm DDT, Arm MAP, and Arm Performance Reports. Arm DDT is the leading debugger for time-saving high-performance application debugging. Arm MAP is the trusted performance profiler for invaluable optimization advice across native and Python HPC codes. Arm Performance Reports provides advanced reporting capabilities.

This release includes enhancements and bug fixes.

Release status
--------------

This is the 21.0.1 release of Arm Forge.

These deliverables are being released under the terms of the agreement between Arm and each licensee (the "Agreement"). All planned verification and validation is complete. The release is suitable for volume production under the terms of the Agreement.


Release contents
================

The following subsections detail:
- The component parts that are delivered as part of this release.
- Any changes since the previous release.
- Any known issues and limitations that exist at the time of this release.

Deliverables
------------

- Arm Forge, which includes:
  - Arm DDT
  - Arm MAP
  - Arm Performance Reports
- Release Notes (this document, also available at: https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-forge/release-history)
- Documentation is available in the documentation area of your product installation or online at:
  https://developer.arm.com/documentation/101136/2101

Information about how to use the Arm HPC tools to debug, profile, and analyze many common scientific applications are available on the Arm Developer website:

https://developer.arm.com/tools-and-software/server-and-hpc/debug-and-profile/arm-forge

Further documentation about all the tools can be found online at:

https://developer.arm.com/tools-and-software/server-and-hpc/help

Documentation can change between product releases. For the latest product documentation, check the software downloads page on the Arm Developer website at:
https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-forge

Arm tests the PDF only in Adobe Acrobat and Acrobat Reader and cannot guarantee the quality  of the represented document when used with any other PDF reader. A suitable file reader can be downloaded from Adobe at http://www.adobe.com.

Differences from previous release
---------------------------------

Differences from the previous release of Arm Forge are detailed in the following subsections.


Additions and changes
~~~~~~~~~~~~~~~~~~~~~

- Arm DDT:
Added support for Arm Compiler for Linux 21.0.
Documented a workaround for startup issues with recent versions of SLURM.

- Arm MAP:
Added support for Arm Compiler for Linux 21.0.
Documented a workaround for startup issues with recent versions of SLURM.

- Arm Performance Reports:
Added support for Arm Compiler for Linux 21.0.
Documented a workaround for startup issues with recent versions of SLURM.

Resolved issues
~~~~~~~~~~~~~~~

- Arm DDT:
[FOR-11503] Fixed intermittent remote connect crash.

- Arm MAP:
[FOR-10699] Fixed an allocation issue in MAP which caused the program being profiled to crash on rare occasions.
[FOR-11503] Fixed intermittent remote connect crash.
[FOR-12576] Adjusted detection of OpenMP Regions with Arm Compiler for Linux.

- Arm Performance Reports:


Deprecated features
~~~~~~~~~~~~~~~~~~~

The following features have been deprecated in this release, and might be removed in a future version:
- VisIt Visualization.
- Automatically adding breakpoints and tracepoints based on version control information.
- Support for the IPMI energy agent.
- Support for PAPI metrics in MAP. Arm recommends using perf metrics instead.
- Support for Python 2.x.x.
- Support for Open MPI 3.x.x.
- Support for Red Hat Enterprise Linux 7.x on aarch64 and ppc64le.
- Support for Ubuntu 16.04.

If you rely on this functionality, please contact support-hpc-sw@arm.com.


Known limitations
-----------------

See the known issues section on the Arm Developer website:
https://developer.arm.com/documentation/101136/2101/Appendix/Known-issues


Get started
===========

This section describes how to get started with accessing, setting up, and using Arm Forge.

For more information, see:
https://developer.arm.com/tools-and-software/server-and-hpc/debug-and-profile/arm-forge/resources/get-started

Licensing information
---------------------

Arm Forge requires a valid license to run.

Note: You do not need to install a license file on a machine that is running the Remote Client for connecting remotely to Arm Forge products. The license is only required on the machine on which Arm Forge is installed.

To request a license, go to:
https://store.developer.arm.com/store/high-performance-computing-hpc-tools/arm-forge

To request an evaluation license, go to:
https://pages.arm.com/Hpc-trial-request.html

For more information about Arm HPC tools licensing, see:
https://developer.arm.com/tools-and-software/server-and-hpc/debug-and-profile/arm-forge/licensing


When you have obtained a license file from Arm, download and install the appropriate platform version of the product here:

https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-forge


See the Arm Forge User Guide for installation methods, such as using the command-line interface and using the GUI to install Arm Forge on Windows, Linux, and MAC, at:
https://developer.arm.com/documentation/101136/2101/Arm-Forge/Installation

Run the product
---------------

See the Arm Forge User Guide for information about running each of the tools, Arm DDT, Arm MAP, and Arm Performance Reports:
https://developer.arm.com/documentation/101136/2101/Arm-Forge/Connecting-to-a-remote-system/Starting-Arm-Forge


Configure the product
---------------------

To learn how to configure the Arm Forge tools, see the user guide at:
https://developer.arm.com/documentation/101136/2101/Appendix/Configuration


Examples
--------

A range of example applications are provided with the product installation that you can use alongside information in the User Guide to explore Arm Forge functionality.
The example applications are located in the <install_directory>/examples directory.


Support
-------

If you have any issues with the installation, content, or use of this release, please create a ticket on https://support.developer.arm.com. Arm will respond as soon as possible.

These deliverables are being released under the terms of the agreement between Arm and each licensee (the "Agreement"). All planned verification and validation  is complete.
The release is suitable for volume production under the terms of the Agreement.

Note: Support for this release of the product is only provided by Arm to partners who have a current support and maintenance contract for the product.


Tools
-----

Full information about the supported platforms for Arm Forge are available on the Developer website:
https://developer.arm.com/documentation/101136/2101/Appendix/Supported-platforms


Release history
===============

A full release history for Arm Forge is available at:
https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-forge/release-history


Proprietary notices
===================

Non-confidential proprietary notice
-----------------------------------

This document is protected by copyright and other related rights and the practice or implementation of the information contained in this document may be protected by one or more patents or pending patent applications. No part of this document may be reproduced in any form by any means without the express prior written permission of Arm. No license, express or implied, by estoppel or otherwise to any intellectual property rights is granted by this document unless specifically stated.
Your access to the information in this document is conditional upon your acceptance that you will not use or permit others to use the information for the purposes of determining whether implementations infringe any third party patents.
THIS DOCUMENT IS PROVIDED "AS IS". ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE DOCUMENT. For the avoidance of doubt, Arm makes no representation with respect to, and has undertaken no analysis to identify or understand the scope and content of, patents, copyrights, trade secrets, or other rights.
This document may include technical inaccuracies or typographical errors.
TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF ANY USE OF THIS DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
This document consists solely of commercial items. You shall be responsible for ensuring that any use, duplication or disclosure of this document complies fully with any relevant export laws and regulations to assure that this document or any portion thereof is not exported, directly or indirectly, in violation of such export laws. Use of the word "partner" in reference to Arm's customers is not intended to create or refer to any partnership relationship with any other company. Arm may make changes to this document at any time and without notice.
If any of the provisions contained in these terms conflict with any of the provisions of any click through or signed written agreement covering this document with Arm, then the click through or signed written agreement prevails over and supersedes the conflicting provisions of these terms. This document may be translated into other languages for convenience, and you agree that if there is any conflict between the English version of this document and any translation, the terms of the English version of the Agreement shall prevail.
The Arm corporate logo and words marked with ® or ™ are registered trademarks or trademarks of Arm Limited (or its affiliates) in the US and/or elsewhere. All rights reserved.  Other brands and names mentioned in this document may be the trademarks of their respective owners. Please follow Arm's trademark usage guidelines at http://www.arm.com/company/policies/trademarks.

Copyright (c) 2017-2021 Arm Limited (or its affiliates). All rights reserved.
Copyright (c) 2002-2017 Allinea Software Limited.

Arm Limited. Company 02557590 registered in England.

110 Fulbourn Road, Cambridge, England CB1 9NJ.

(LES-PRE-20349)

Confidentiality Status
----------------------

This document is Non-Confidential. The right to use, copy and disclose this document may be subject to license restrictions in accordance with the terms of the agreement entered into by Arm and the party that Arm delivered this document to.

Unrestricted Access is an Arm internal classification.

Product status
--------------

The information in this document is final, that is for a developed product.

Web address
-----------

http://www.arm.com

Progressive terminology statement
---------------------------------

Arm values inclusive communities. Arm recognizes that we and our industry have used terms that can be offensive. Arm strives to lead the industry and create change.

If you find offensive terms in this document, please email terms@arm.com.

Glossary
========

The Arm Glossary is a list of terms used in Arm documentation, together with definitions for those terms. The Arm Glossary does not contain terms that are industry standard unless the Arm meaning differs from the generally accepted meaning.
See the Arm Glossary for more information: https://developer.arm.com/glossary.