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:
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.
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:
Finally you need to update your environment variables:
<install location>\arm-performance-libraries_23.08\armpl_23.08
where <install location> is the location into which you unpacked Arm Performance Libraries.
<install location>
%ARMPL_DIR%\bin
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:
More information about the Windows UCRT may be found here
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.
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:
cl /nologo /MT /c /I%ARMPL_DIR%\include_lp64 /Focode.obj code.c
cl /nologo /MT code.obj /Feapp.exe %ARMPL_DIR%\lib\libarmpl_lp64.lib %ARMPL_DIR%\lib\libFortranRuntime.lib %ARMPL_DIR%\lib\libFortranDecimal.lib
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.