Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Tools, Software and IDEs blog Windows Release of Arm Performance Libraries
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • High Performance Computing (HPC)
  • arm performance libraries
  • Windows
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Windows Release of Arm Performance Libraries

Chris Goodyer
Chris Goodyer
August 24, 2023
3 minute read time.

Arm are proud to announce that we have now released our first version of Arm Performance Libraries (Arm PL) for Windows 11 devices.  This release, numbered 23.08, covers key libraries for fast, efficient and accurate computation of linear algebra, both dense and sparse, and Fast Fourier Transforms (FFTs).  By releasing this for Windows we are very happy to be able to bring our optimized implementations to a new ecosystem for acceleration On Arm.

The functionality provided in Arm PL comes from the following common numerical requirements that developers frequently need:

  • BLAS: Matrix and vector linear algebra for fundamental vector and matrix operations, like multiplication, dot products and triangular solving.
  • LAPACK: More complex linear algebra including matrix factorization and other solving functions, eigenvalues and eigenvector calculation and matrix inversion routines. This version matches the latest version of LAPACK 3.11.0.
  • FFTs: Full support for in-place and out-of-place real and complex Fast Fourier Transforms using the FFTW API.
  • Sparse linear algebra: Support including optimized functions for matrix-vector, matrix-matrix and solving triangular sparse systems.
  • Batched linear algebra: Useful where there are many small cases to be solved at once.

Since the BLAS, LAPACK and FFTW interfaces are well used, standard APIs this means that any application you are building on Windows will be able to link to Arm PL and benefit from its acceleration.  Full documentation is available online for all functions, whether calling from C/C++ or Fortran.  Use of both MSVC, the Microsoft Compiler, and LLVM are enabled through this release.  The library also has a set of example programs provided at installation time that can be used, not only to verify you can link correctly, but also to demonstrate how to use our custom sparse interfaces.

Downloading and installing Arm PL 23.08

In order to get Arm Performance Libraries simply head over to our Download page.  Choose the "Download - Windows Latest version: 23.08" option and accept the EULA.  No payment or further licence is needed, simply install and you will be good to go.

To install Arm Performance Libraries:

  1. Unpack and extract the zip file:
  2. Locate the downloaded zip file in the Windows File Explorer.
  3. Double click on the file, and then click on the "Extract all" button at the top of the File Explorer.
  4. In the pop-up window, select a location to unpack Arm Performance Libraries into on your system, and click on Extract.

Finally you need to update your environment variables:

  1. Using the Windows Search feature, search for "System Properties". Click on "Best Match".
  2. In the System Properties window click on "Environment Variables".
  3. Add a new environment variable called ARMPL_DIR, which should have the value

<install location>\arm-performance-libraries_23.08\armpl_23.08

where <install location> is the location into which you unpacked Arm Performance Libraries.

  • Next, add %ARMPL_DIR%\bin  to the list of directories in the PATH environment variable.

Linking software to use Arm PL

Within Arm Performance Libraries we have packaged together many variants to allow users the flexibility to build the software products they want.  This means we provide options for:

  • Libraries linked dynamically to the Microsoft Universal C Runtime library (UCRT) (i.e. compatible with cl builds using /MD):
  • OR Libraries linked statically to the Microsoft Universal C Runtime library (UCRT) (i.e. compatible with cl builds using /MT):

More information about the Windows UCRT may be found here

  • Static libraries
    • OR dynamic libraries
  • Serial implementations
    • OR versions with multithreading using OpenMP
  • 32-bit integer interfaces (called "lp64")
    • OR 64-bit integer interfaces (called "ilp64") 

Full details of the naming of these libraries is given in the RELEASE_NOTES file included with the release. 

In addition to the Arm PL libraries above we provide some runtime libraries which they depend upon. These are the OpenMP dynamic runtime libraries and the Fortran runtime libraries, for /MT and /MD builds.  Linking the Fortran runtime libraries in explicitly is needed as some components of Arm PL (namely LAPACK) are written predominantly in Fortran.

Examples

An example of using the dynamic Arm PL with 32-bit integer interfaces, OpenMP and /MD UCRT linkage from within an MSVC Command Prompt is as follows:

Compile:

cl /nologo /MD /c /I%ARMPL_DIR%\include_lp64 /Focode.obj code.c

Link:

cl /nologo /MD code.obj /Feapp.exe %ARMPL_DIR%\lib\armpl_lp64_mp.dll.lib
     %ARMPL_DIR%\lib\omp.dll.lib
     %ARMPL_DIR%\lib\FortranRuntime.lib %ARMPL_DIR%\lib\FortranDecimal.lib

If linking to a serial build of Arm PL there is no need to include the OpenMP runtime in the linking step.  Here is an example of linking to the static 32-bit integer library with /MT UCRT linkage:

Compile:

cl /nologo /MT /c /I%ARMPL_DIR%\include_lp64 /Focode.obj code.c

Link:

 cl /nologo /MT code.obj /Feapp.exe %ARMPL_DIR%\lib\libarmpl_lp64.lib
      %ARMPL_DIR%\lib\libFortranRuntime.lib
      %ARMPL_DIR%\lib\libFortranDecimal.lib

What's next?

The Windows releases of Arm Performance Libraries will be continued as part of the regular release cycle.  This aims for two major releases each year with the 23.10 being the next scheduled release in October. Getting feedback from users will help us plan all future work so don't hesitate to get in contact through our user forum.

Anonymous
Tools, Software and IDEs blog
  • Python on Arm: 2025 Update

    Diego Russo
    Diego Russo
    Python powers applications across Machine Learning (ML), automation, data science, DevOps, web development, and developer tooling.
    • August 21, 2025
  • Product update: Arm Development Studio 2025.0 now available

    Stephen Theobald
    Stephen Theobald
    Arm Development Studio 2025.0 now available with Arm Toolchain for Embedded Professional.
    • July 18, 2025
  • GCC 15: Continuously Improving

    Tamar Christina
    Tamar Christina
    GCC 15 brings major Arm optimizations: enhanced vectorization, FP8 support, Neoverse tuning, and 3–5% performance gains on SPEC CPU 2017.
    • June 26, 2025