You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

build_win_arm.md 4.1 kB

Squash commit of GitHub wiki * Created Installation Guide (markdown) * Updated quick installation (markdown) * Updated Home (markdown) * Updated Document (markdown) * Updated Document (markdown) * Updated Document (markdown) * Created Installation Guide (markdown) * Created Home (markdown) * Init version * Updated OpenBLAS Wiki (markdown) * Updated OpenBLAS Wiki (markdown) * Updated OpenBLAS Wiki (markdown) * Updated Document (markdown) * Updated Installation Guide (markdown) * Updated Installation Guide (markdown) * Created Download (markdown) * Created Faq (markdown) * Updated Faq (markdown) * Updated FAQ * Created How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated Document (markdown) * Updated Faq (markdown) * Updated Faq (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated Faq (markdown) * Updated OpenBLAS Wiki (markdown) * Updated Home (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Created How to generate import library for MingW (markdown) * Updated Document (markdown) * Updated Faq (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Build instrunctions for FreeBSD * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated Installation Guide (markdown) * Updated Faq (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * minor edits * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated Faq (markdown) * Installation instructions for Windows * Updated Faq (markdown) * G77 conventions no longer needed with GCC 4.7+ * Updated Home (markdown) * Document why issue 168 occurred. * Updated Home (markdown) * Created Publications (markdown) * Updated Home (markdown) * Updated Document (markdown) * Updated Faq (markdown) * Updated Download (markdown) * Updated Publications (markdown) * Updated Faq (markdown) * Updated Document (markdown) * Revert 7580d38ffad37e6613e6304707aaaa681f3d78c2 ... b1bd4ff37d2106bbd5c4730a08dbb789cc44e7d4 * Created Mailing List (markdown) * Updated Mailing List (markdown) * Updated Mailing List (markdown) * Updated Home (markdown) * Updated Document (markdown) * Updated Publications (markdown) * Updated Download (markdown) * Updated Faq (markdown) * Updated Home (markdown) * Updated Faq (markdown) * Updated Home (markdown) * Revert b69f1417cdf8820be046cc27a2b96b42a25bc3a3 ... 90a227c317c3572ced943461ac3a252c40790f44 on Home * Updated Home (markdown) * Updated Publications (markdown) * Updated Faq (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * We already ensure the stack alignment in Makefile.system for Win32. * Updated Faq (markdown) * Updated Faq (markdown) * Updated Publications (markdown) * Created Donation (markdown) * Updated Home (markdown) * Updated Document (markdown) * Updated Faq (markdown) * Updated Publications (markdown) * Updated Download (markdown) * Updated Mailing List (markdown) * Updated Donation (markdown) * Updated Download (markdown) * Updated Donation (markdown) * Updated Donation (markdown) * Updated Donation (markdown) * Updated Donation (markdown) * Updated Home (markdown) * Updated Faq (markdown) * Updated Download (markdown) * Updated Home (markdown) * Updated Home (markdown) * Add new entry for static linking and pthread. * Fix named anchors (see http://stackoverflow.com/questions/5319754/cross-reference-named-anchor-in-markdown/7335259#7335259) * Created Related packages that use OpenBLAS (markdown) * Updated Related packages that use OpenBLAS (markdown) * Updated Related packages that use OpenBLAS (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated Document (markdown) * Created To-do List (markdown) * Updated To do List (markdown) * Updated Fixed optimized kernels To do List (markdown) * Fix English idiom * Remove trailing whitespace * Updated Fixed optimized kernels To do List (markdown) * Updated Fixed optimized kernels To do List (markdown) * Updated Fixed optimized kernels To do List (markdown) * Updated Fixed optimized kernels To do List (markdown) * Updated Faq (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated Related packages that use OpenBLAS (markdown) * Updated Related packages that use OpenBLAS (markdown) * Created Machine List (markdown) * Updated Document (markdown) * Updated Installation Guide (markdown) * Created User Manual (markdown) * Updated User Manual (markdown) * Updated Document (markdown) * Updated User Manual (markdown) * Updated User Manual (markdown) * Updated User Manual (markdown) * Updated User Manual (markdown) * Updated Related packages that use OpenBLAS (markdown) * Updated Faq (markdown) * Updated Related packages that use OpenBLAS (markdown) * Updated Machine List (markdown) * Updated Related packages that use OpenBLAS (markdown) * Updated Related packages that use OpenBLAS (markdown) * Add a note about building in QEMU * Updated Home (markdown) * Updated Faq (markdown) * update for allocating too many meory error. * Updated Faq (markdown) * Updated Faq (markdown) * Updated Installation Guide (markdown) * Updated Faq (markdown) * Init function doc * Updated Document (markdown) * Updated User Manual (markdown) * Updated User Manual (markdown) * Created How to build OpenBLAS for Android (markdown) * Updated How to build OpenBLAS for Android (markdown) * Updated Home (markdown) * Part of the description is really no clear, I add some more information, so it would be easier for VS user to fix the problems facing them. * Created Developer manual (markdown) * Updated Document (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * a typo, download ** frome -> download from * Updated Faq (markdown) * English (minor edit) * Updated Developer manual (markdown) * Updated Developer manual (markdown) * Updated Developer manual (markdown) * Updated Machine List (markdown) * Updated Developer manual (markdown) * Updated Developer manual (markdown) * Updated How to build OpenBLAS for Android (markdown) * Updated How to build OpenBLAS for Android (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * issue 842 * Updated How to build OpenBLAS for Android (markdown) * Updated How to build OpenBLAS for Android (markdown) * Updated How to build OpenBLAS for Android (markdown) * Updated How to build OpenBLAS for Android (markdown) * Added FC for building with Fortran * Change link for the Intel MKL documentation * Updated User Manual (markdown) * Updated User Manual (markdown) * Added MIPS build instructions from issue 949 * use TARGET_CFLAGS and TARGET_LDFLAGS instead of CFLAGS and LDFLAGS for linking OpenBLAS on ARMv7 * Add Windows updates (msys2,mingw/w64 merger), Android/MIPS pointers, qemu hint * Building libs & netlib targets to prevent errors in tests * Recipes not targets (for make) * Making only libs, not netlib (which also contains link/run tests...) * Copied from instructions by Ivan Ushakov, originally posted in issue 569 * Updated How to build OpenBLAS for iPhone iOS (markdown) * Updated Faq (markdown) * Created How to build OpenBLAS for iPhone iOS (markdown) * error code (0xc000007b) was missing a character * Updated How to build OpenBLAS for iPhone iOS (ARMv8) (markdown) * Updated How to build OpenBLAS for iPhone iOS (ARMv8) (markdown) * Revert 7e9dd0ebf079e002e3aa831fa671fde3e8cfad81...8d105c7be8cd447482f61e0295c0c146f5314eb5 on How to build OpenBLAS for iPhone iOS * Add guide on how to reversibly supplant Ubuntu LTS libblas.so.3 * typo * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated User Manual (markdown) * Updated Faq (markdown) * Updated Download (markdown) * Add perl to pacman package list * Fixed formatting on general questions * Copied from issue 1136 * Added instructions for building for Windows UWP. * To clear confusions vs super-fat-binaries that dont exist. * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Update for 0.2.20 (full builds, ARMv7 softfp support, newer NDKs using CLANG) * Updated How to build OpenBLAS for Android (markdown) * Fix some formatting issues * Updated How to build OpenBLAS for Android (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to build OpenBLAS for Android (markdown) * Created Precompiled installation packages (markdown) * Updated Precompiled installation packages (markdown) * Example - debian? * Mention (and link to) distribution-specific packages * Updated Installation Guide (markdown) * OpenSuSE (13.2, SLE included) * Updated Precompiled installation packages (markdown) * Updated Precompiled installation packages (markdown) * Make it look consistent. * Fedora+EPEL // maybe rpmbuild is too heavy * Updated Precompiled installation packages (markdown) * Updated Precompiled installation packages (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated Precompiled installation packages (markdown) * fix toolchain argument in armv8 clang build as per issue 1337 * add note about stdio.h not found error * Add flang instructions * Use the SVG Travis badge * homebrew option for OSX * Promote native MSVC builds with LLVM * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Direct people to the appropriate instructions * Add link to the Goto paper * Add CMAKE_BUILD_TYPE * Add note about having to specify AR on a Mac, from issue 1435 * Mention requirement to build a standalone toolchain in the clang section as well * added 'perl' to conda install command * homebrew/science was deprecated. This tap is now empty as all its formulae were migrated. * Added hint for "expected identifier" error message to mingw section following issue 1503 * Revert 9161c3b54281131e892dec739d888f35e6c59cf3...03f879be0c9e6a55705bc7efd5ee193299e04029 on How to use OpenBLAS in Microsoft Visual Studio * Revert to recommending mingw-w64 from sf.net and add note about issue 1503 * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Update MSVC installation procedure with info from issue 1521 * Add downgrade option for msys2 mingw compiler issue as suggested by econwang in issue 1503 * Add note about static linking bug with NDK 16 and API>22 * Updated Precompiled installation packages (markdown) * Updated Precompiled installation packages (markdown) * Updated Faq (markdown) * OBS is renamed and deep link format changed. Apparently recent SLE includes rpm by default too. * Add links to Conda-Forge and to staticfloat's builds for Julia * Mention _64 suffix appended to Julia builds with INTERFACE64 (issue 1617) * Fix unwanted markdown italicization * Add instruction to change to the generic sgemmkernel implementation from issue 1531 * Added hint about stack size requirements for running lapack-test from PR 1645; fixed markup of section headings * Add link to RvdG's publications page as a non-paywalled source of the "Goto paper" * Add section about non-suitability of the IBM XL compiler on POWER8 * Mention cmake version requirement in view or recent issues with link failures in utest etc. * Replace outdated entry for Sandybridge support with more general section on AVX512, Ryzen and GPU * Mention Apple Accelerate here as iOS build issue tickets usually die as soon as someone points out this option to the questioner. * Add section about unexpectedly using an older pre-installed version of the shared library (issue 1822) * fix markup of new entry * Mention perl and C compiler as prerequisites on the build host * Save WIP page * Updated Notes on parallelism and OpenBLAS (markdown) * Updated Notes on parallelism and OpenBLAS (markdown) * Updated Notes on parallelism and OpenBLAS (markdown) * Updated [WIP] Notes on parallelism and OpenBLAS (markdown) * Updated [WIP] Notes on parallelism and OpenBLAS (markdown) * Updated [WIP] Notes on parallelism and OpenBLAS (markdown) * Destroyed [WIP] Notes on parallelism and OpenBLAS (markdown) * Updated Faq (markdown) * Add small note on AVX512 for CentOS/RHEL section. * document the extension functions * formatting * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated Download (markdown) * Add brief general usage information from issue 1925 * Add link to Pete Warden blog article on GEMM rather than just deep-linking to a diagram from it * Document some of the less useful parameters from param.h * Updated Installation Guide (markdown) * Done with issue 2089 * Add note about changed library names for update-alternatives on Debian/Ubuntu * Updated Home (markdown) * Add note about using OpenBLAS with CUDA_HPL 2.3 from issue issue 909 * Fix typos in previous commit * Add pdb instructions fir cross-builds * Add note about generic QEMU CPUID clashing with existing P2(MMX) * typo * typo * C code syntax highlight * Updated multithreading section to introduce option USE_LOCKING (issue 2164) * Updated How to build OpenBLAS for iPhone iOS (ARMv8) (markdown) * Updated How to build OpenBLAS for iPhone iOS (ARMv8) (markdown) * Clarify Miniconda/cmake install instructions and redact outdated note about msys2 * Document cmake install step * Updated How to build OpenBLAS for Android (markdown) * Add solution for programs that look for libblas.so/liblapack.so * Add entry for powersaving modes on ARM boards (from issue 2540) * Add suggestion for speed problems on big.little systems from issue 2589 * Convert the ARMV8 big.little tidbit to a separate topic and update it with more details from the issue ticket * Add entry about problems caused by using the raw cblas.h (issue 2593) * complete quote symbol around CPATH environment variable * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Add note about running conda activate when working in a VS window (from issue 2637) * Add note about (not) compiling with -fbounds-check (ticket 2657) * Add entry about compile-time NUM_THREADS setting (issue 2678) * Added some sketchy description of adding cpuids for autodetection, adding targets and architectures * Markup and typo fixes * Add openblas_set_affinity from PR 2547 * Created _Footer (markdown) * Destroyed _Footer (markdown) * Add LAPACK-like SHGEMM to document the "official" status of the SH prefix * fix formatting of latest addition * Move outdated instructions for gcc-based NDK versions to the bottom, add hint about x86 builds * Add help for cpuid recognition failure * Update source tree layout & mention extraneous cpu paramerts * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Explain why pure VS builds are slower, and highlight that they do not support DYNAMIC_ARCH * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Mention fortran requirement and incompatibility of ifort with msvc * preliminary page for understanding the build system, needs a lot more work and input from more knowledgeable people than me * Updated Build system overview (markdown) * Updated WIP Build system overview (community made) (markdown) * add information for HOSTCC, HOST_CFLAGS * Added alternative script which was tested on OSX with latest NDK * added link to targets list * Updated WIP Build system overview (community made) (markdown) * Updated WIP Build system overview (community made) (markdown) * Updated WIP Build system overview (community made) (markdown) * Updated WIP Build system overview (community made) (markdown) * Updated WIP Build system overview (community made) (markdown) * Updated WIP Build system overview (community made) (markdown) * added script for x86_64 architecture * Updated WIP Build system overview (community made) (markdown) * Updated WIP Build system overview (community made) (markdown) * updated link to FLAME publications list * Created How to use OpenBLAS on Cortex-M (markdown) * Updated How to use OpenBLAS on Cortex M (markdown) * Updated Precompiled installation packages (markdown) * Updated How to use OpenBLAS on Cortex M (markdown) * Updated How to use OpenBLAS on Cortex M (markdown) * Updated How to use OpenBLAS on Cortex M (markdown) * Update source layout graph and start a short section on benchmarking to collect various pointers from the issue tracker * Add workaround for building with CMAKE on OSX * Use actual small headings to fix... weird bullet indent shit * Oops * Updated Faq (markdown) * Updated Faq (markdown) * Updated How to generate import library for MingW (markdown) * Updated How to generate import library for MinGW (markdown) * Updated How to generate import library for MinGW (markdown) * Updated How to generate import library for MinGW (markdown) * Updated How to generate import library for MinGW (markdown) * Updated How to generate import library for MinGW (markdown) * Updated How to generate import library for MinGW (markdown) * Updated How to generate import library for MinGW (markdown) * Updated How to generate import library for MinGW (markdown) * explicitly set CMAKE_MT to replace the new cmake default llvm-mt (failing) * Add -Wl,-rpath,/your_path/OpenBLAS/lib option to gcc linker line in "Link shared library" section + explanation for why it is needed/can be omitted. Also make note that -lgfortran not needed if only making LAPACKE calls. * Add note explaining that build flags passed to make should also be passed to make install * give example of install error * Describe how to build openblas library for win/arm64 targets * Add Xen to the existing entry for QEMU/KVM based on issue 3445 * Updated Download (markdown) * Updated Installation Guide (markdown) * Updated Installation Guide (markdown) * Revert b8da0e8523b898a2206d1e2fe99dbfb4ebb0ffa8...bc55aade759d2f925689b000828da249e1fc6a1a on Installation Guide * Revert b0c9a2ee060b8dd0b46b4c58375ef2a743c0363a...cecf8cf67963bd77a0bb97086e3a457a4cee11ff on Download * Revert bc55aade759d2f925689b000828da249e1fc6a1a...134894a0f09a0e92eef1b9a5c9e63f459d2db55e on Installation Guide * Add NDK23B example * Makes iOS build more robust * Double -isysroot * Bump up required devtoolset version for AVX-512 intrinsics. * Updated Installation Guide (markdown) * Updated How to build OpenBLAS for Windows on ARM64 (markdown) * Revert b8da0e8523b898a2206d1e2fe99dbfb4ebb0ffa8...75bba70832f8765faee693931c4a9e3eb6c84d98 on Installation Guide * Revert 75bba70832f8765faee693931c4a9e3eb6c84d98...d171e711a5cd8026b2eb507b249b5e51fa28b2a2 on Installation Guide * restore Windows link after malicious edit * Revert 1bcb03dcef85c675aace7f0a755d5aa36ec46eca...f732906434146b1a1ee82abe944a6d51d8f43b81 on Installation Guide * restore Windows link after malicious edit * Updated Installation Guide (markdown) * Bump up AVX-512 devtoolset because of identified packaging issues * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * n-dash html entity instead of - * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Add the bfloat16 functions * mention AXPBY * Update building for Apple M1 * Updated How to build OpenBLAS for Windows on ARM64 (markdown) * Created How to build OpenBLAS for macOS M1 / arm64 (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Add NO_AVX2 build hint for OSX Docker Desktop/xhyve (issues 2194 and 2244) * Mention the ELF offset/address bug from binutils 2.38 ld * moved issue 665 (sparse matrix/vector support) to a faq entry * Update and simplify based on CI experience and 3741 * Updated Download (markdown) * Updated How to build OpenBLAS for Windows on ARM64 (markdown) * Revert 0dcee87d486028fbd88c603853cdcae810e025c6...bf3d15e74d42b0b01618b4beb7b9d658fb905118 on Download * Revert a02f9e470f8e26eda1b8d8601ad2486557721ccf...c862aeb3492c29b487858d43c93676855b60a1f2 on How to build OpenBLAS for Windows on ARM64 * Updated How to use OpenBLAS in Microsoft Visual Studio (markdown) * Revert 9db97d11d88c801e8c5e9b8d6cc85fb44e5bca61...d2eb48810f3ecc1680900581473005f79c394ca4 on How to use OpenBLAS in Microsoft Visual Studio * start with the smallest configs, Appveyor and Cirrus * Updated CI jobs overview (markdown) * Add Azure CI * Add github workflows * Add the crossbuild parts of the dynamic_arch workflow * remove trailing separator * Add FreeBSD/Cirrus * Add ILP64 jobs on Cirrus * Add C910V and the OSUOSL Jenkins jobs (currently configured for my fork) * Updated Installation Guide (markdown) * Expand section on precompiled windows binaries to mention INTERFACE64=0 option * Remove reference to buildbot (domain reregistered to someone else, issue 4148 * Add OpenMP hints for mixed threads mode from issue 3186 * document NUM_PARALLEL (paraphrased from issue 1735) and expand other entries a bit * Mention use of llvm-ar rather than gcc-ar in recent NDKs and remove perl requirement * Add ?gemmt from -1.3.23/0.3.24 * note that LLVM is an optional install with VS2022 * clarify that all tools for the xbuild come with VS2022 * add instructions for cross-compiling from Windows/x86 (copied from issue #4459) Co-authored-by: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de> Co-authored-by: xianyi <traits.zhang@gmail.com> Co-authored-by: Zhang Xianyi <traits.zhang@gmail.com> Co-authored-by: Andrew <bradatajs@yahoo.com> Co-authored-by: Elethom <elethomhunter@gmail.com> Co-authored-by: Isuru Fernando <isuruf@gmail.com> Co-authored-by: A. Tammy <epsilon-0@users.noreply.github.com> Co-authored-by: Andrew <16061801+brada4@users.noreply.github.com> Co-authored-by: Paul MUSTIÈRE <paul.mustiere@gmail.com> Co-authored-by: TiborGY <gyori.tibor@stud.u-szeged.hu> Co-authored-by: xoviat <xoviat@users.noreply.github.com> Co-authored-by: zchothia <zaheer.chothia@gmail.com> Co-authored-by: Eric Larson <larson.eric.d@gmail.com> Co-authored-by: xoviat <49173759+xoviat@users.noreply.github.com> Co-authored-by: Kevin Yang <kevin@cobaltspeech.com> Co-authored-by: Mavaddat Javid <javid@mavaddat.ca> Co-authored-by: Derek Huang <37860662+phetdam@users.noreply.github.com> Co-authored-by: Iblis Lin <iblis@hs.ntnu.edu.tw> Co-authored-by: Niyas Sait <niyas.sait@linaro.org> Co-authored-by: Roman Nazarevych <lemberg.rn@gmail.com> Co-authored-by: rumiv <100173053+rumiv@users.noreply.github.com> Co-authored-by: Felix Yan <felixonmars@archlinux.org> Co-authored-by: Matti Picus <matti.picus@gmail.com> Co-authored-by: Timothy Gu <timothygu99@gmail.com> Co-authored-by: Yubin Wang <wangyubin19890515@163.com> Co-authored-by: dtidmarsh <tidmarsh.david@gmail.com> Co-authored-by: hninhninhtun <30315263+hninhninhtun@users.noreply.github.com> Co-authored-by: masel0 <96305063+masel0@users.noreply.github.com> Co-authored-by: meow464 <70211708+meow464@users.noreply.github.com> Co-authored-by: Ankush Chauhan <ankush.26.11@gmail.com> Co-authored-by: Ashwin Sekhar T K <ashwinyes@users.noreply.github.com> Co-authored-by: Chunde <xmuhcd@msn.com> Co-authored-by: Corey Richardson <corey@octayn.net> Co-authored-by: CristianAndrade94 <117796497+CristianAndrade94@users.noreply.github.com> Co-authored-by: Dave Liu <dliu@rivierapartners.com> Co-authored-by: David Hagen <david@appliedbiomath.com> Co-authored-by: Gökçen Eraslan <gokcen.eraslan@gmail.com> Co-authored-by: Hong <hong@topbug.net> Co-authored-by: Iarsv <96173089+Iarsv@users.noreply.github.com> Co-authored-by: Isuru Fernando <isuru.11@cse.mrt.ac.lk> Co-authored-by: Jellby <jellby@yahoo.com> Co-authored-by: Joachim Wagner <jwagner@computing.dcu.ie> Co-authored-by: Joseph Shen <joseph.smeng@gmail.com> Co-authored-by: Kevin Ji <kevin.ji@outlook.com> Co-authored-by: Liming Wang <lmwang@gmail.com> Co-authored-by: Marco Pompili <marcs.pompili@gmail.com> Co-authored-by: Marcus Ottosson <konstruktion@gmail.com> Co-authored-by: Musen <yuan.gan@fandm.edu> Co-authored-by: Neil Shipp <neilsh@microsoft.com> Co-authored-by: Olivier Grisel <olivier.grisel@ensta.org> Co-authored-by: Randall Bohn <rsbohn@familysearch.org> Co-authored-by: Tiger <51085070+1149859096@users.noreply.github.com> Co-authored-by: Tillsten <mail.till@gmx.de> Co-authored-by: Tommy Carozzani <tommy.carozzani@nanolive.ch> Co-authored-by: Tyler <TT--@users.noreply.github.com> Co-authored-by: Xingyu Na <asr.naxingyu@gmail.com> Co-authored-by: Zhuo Zhang <zchrissirhcz@gmail.com> Co-authored-by: brada4 <bradatajs@yahoo.com> Co-authored-by: ccy022364 <ccy022364@163.com> Co-authored-by: davmaz <davmaz@users.noreply.github.com> Co-authored-by: dkapelyan <30596321+dkapelyan@users.noreply.github.com> Co-authored-by: eolianoe <eolianoe@users.noreply.github.com> Co-authored-by: fommil <sam.halliday@Gmail.com> Co-authored-by: magras <magras@users.noreply.github.com> Co-authored-by: neitann <96481461+neitann@users.noreply.github.com> Co-authored-by: raffamaiden <raffamaiden@gmail.com> Co-authored-by: sogf <93816959+sogf@users.noreply.github.com> Co-authored-by: wernsaar <wernsaar@googlemail.com>
2 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. This page describes how to natively build OpenBLAS library for windows on arm64 targets.
  2. See [below](#xcomp) for how to cross-compile OpenBLAS for WoA on an x86_64 Windows host.
  3. _We hope that the procedure can be simplified for/by LLVM 17+ and its flang-new compiler for the FORTRAN parts (LAPACK) of the code but we have no means of verifying that as of January 2024._
  4. # Prerequisite
  5. Following tools needs to be installed
  6. ## 1. Download and install clang for windows on arm
  7. Find the latest LLVM build for WoA from [LLVM release page](https://releases.llvm.org/)
  8. E.g: LLVM 12 build for WoA64 can be found [here](https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0/LLVM-12.0.0-woa64.exe)
  9. Run the LLVM installer and ensure that LLVM is added to environment PATH.
  10. ## 2. Download and install classic flang for windows on arm
  11. Classic flang is the only available FORTRAN compiler for windows on arm for now and a pre-release build can be found [here](https://github.com/kaadam/flang/releases/tag/v0.1)
  12. There is no installer for classic flang and the zip package can be extracted and the path needs to be added to environment PATH.
  13. E.g: on PowerShell
  14. `$env:Path += ";C:\flang_woa\bin"`
  15. # Build
  16. The following steps describe how to build the static library for OpenBLAS with and without LAPACK
  17. ## 1. Build OpenBLAS static library with BLAS and LAPACK routines with Make
  18. Following command can be used to build OpenBLAS static library with BLAS and LAPACK routines
  19. `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`
  20. ## 2. Build static library with BLAS routines using CMake
  21. Classic flang has compatibility issues with cmake hence only BLAS routines can be compiled with CMake
  22. `mkdir build`
  23. `cd build`
  24. `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`
  25. `cmake --build . --config Release`
  26. # Known issue
  27. ## `getarch.exe` execution error
  28. 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](https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28677636097/Debug+run-time+DLL+issue#Workaround) for the workaround.
  29. # <a id="xcomp"></a>Alternative: cross-compiling on Windows x86
  30. ## Prerequisites:
  31. a working installation of LLVM and Ninja (the versions included in the latest Visual Studio 2022 will do, if you install its optional Llvm.Clang component)
  32. ## Build
  33. 1. Load into the appropriate cross compiling developer shell (in this case powershell, for cmd.exe it would be vcvarsamd64_arm64.bat):
  34. 'C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\Launch-VsDevShell.ps1' -Arch arm64 -HostArch amd64
  35. 2. Change to the folder where you unpacked the OpenBLAS sources if you haven't already, and create a subfolder for building.
  36. Then change into that folder.
  37. 3. Invoke the following CMake command
  38. ```
  39. cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DTARGET=ARMV8 -DCMAKE_CROSSCOMPILING=ON -DCMAKE_SYSTEM_NAME="Windows" -DARCH=arm -DBINARY=64 -DCMAKE_SYSTEM_PROCESSOR=ARM64 -DCMAKE_C_COMPILER=clang-cl -DCMAKE_C_COMPILER_TARGET=arm64-pc-windows-msvc -DCMAKE_ASM_COMPILER_TARGET=arm64-pc-windows-msvc.
  40. ```
  41. (Note the use of clang-cl instead of clang, and adding in the _COMPILER_TARGET entries. Without C_COMPILER_TARGET, clang-cl will be trying to compile x64 machine code and not make it past the cmake generation step. Without ASM_COMPILER_TARGET the assembly files in openblas will fail to assemble because the assembler is trying to interpret them as x64 assembly.)
  42. 4. Invoke Ninja for the actual compilation