-
Notifications
You must be signed in to change notification settings - Fork 1.5k
How to build OpenBLAS for Windows on ARM64
This page describes how to natively build OpenBLAS library for windows on arm64 targets.
Following tools needs to be installed
Find the latest LLVM build for WoA from LLVM release page
E.g: LLVM 12 build for WoA64 can be found here
Run the LLVM installer and ensure that LLVM is added to environment PATH.
Classic flang is the only available FORTRAN compiler for windows on arm for now and a pre-release build can be found here
There is no installer for classic flang and the zip package can be extracted and the path needs to be added to environment PATH.
E.g: on PowerShell
$env:Path += ";C:\flang_woa\bin"
The following steps describe how to build the static library for OpenBLAS with and without LAPACK
Following command can be used to build OpenBLAS static library with BLAS and LAPACK routines
make CC="clang-cl" HOSTCC="clang-cl" AR="llvm-ar" BUILD_WITHOUT_LAPACK=0 NOFORTRAN=0 DYNAMIC_ARCH=0 TARGET=ARMV8 ARCH=arm64 BINARY=64 USE_OPENMP=0 PARALLEL=1 RANLIB="llvm-ranlib" MAKE=make F_COMPILER=FLANG FC=FLANG FFLAGS_NOOPT="-march=armv8-a -cpp" FFLAGS="-march=armv8-a -cpp" NEED_PIC=0 HOSTARCH=arm64 libs netlib
Classic flang has compatibility issues with cmake hence only BLAS routines can be compiled with CMake
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_C_COMPILER=clang -DBUILD_WITHOUT_LAPACK=1 -DNOFORTRAN=1 -DDYNAMIC_ARCH=0 -DTARGET=ARMV8 -DARCH=arm64 -DBINARY=64 -DUSE_OPENMP=0 -DCMAKE_SYSTEM_PROCESSOR=ARM64 -DCMAKE_CROSSCOMPILING=1 -DCMAKE_SYSTEM_NAME=Windows
cmake --build . --config Release
If you notice that platform-specific headers by getarch.exe
are not generated correctly, It could be due to a known debug runtime DLL issue for arm64 platforms. Please check out link for the workaround.