Skip to content

Commit 2d46f1e

Browse files
authored
Merge branch 'develop' into issue5414
2 parents e384396 + c040d5e commit 2d46f1e

1,038 files changed

Lines changed: 36165 additions & 18714 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,39 @@ if(NOT NO_LAPACKE)
708708
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapacke_mangling_with_flags.h.in "${CMAKE_BINARY_DIR}/lapacke_mangling.h"
709709
)
710710
install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
711+
if (NOT (x${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "x"))
712+
message (STATUS "Generating lapacke.h in ${CMAKE_INSTALL_INCLUDEDIR}")
713+
set(LAPACKE_H ${CMAKE_BINARY_DIR}/generated/lapacke.h)
714+
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapacke.h LAPACKE_H_CONTENTS)
715+
if (NOT ${SYMBOLPREFIX} STREQUAL "")
716+
string(REGEX REPLACE "(LAPACKE_*)" " ${SYMBOLPREFIX}\\1" LAPACKE_H_CONTENTS_NEW "${LAPACKE_H_CONTENTS}")
717+
string(REPLACE "_ ${SYMBOLPREFIX}LAPACKE_H_" "_LAPACKE_H_" LAPACKE_H_CONTENTS ${LAPACKE_H_CONTENTS_NEW})
718+
string(REPLACE "${SYMBOLPREFIX}LAPACKE_malloc" "LAPACKE_malloc" LAPACKE_H_CONTENTS_NEW ${LAPACKE_H_CONTENTS})
719+
string(REPLACE "${SYMBOLPREFIX}LAPACKE_free" "LAPACKE_free" LAPACKE_H_CONTENTS ${LAPACKE_H_CONTENTS_NEW})
720+
set(LAPACKE_H_CONTENTS_NEW ${LAPACKE_H_CONTENTS})
721+
endif()
722+
if (NOT ${SYMBOLSUFFIX} STREQUAL "")
723+
string(REGEX REPLACE "(${SYMBOLPREFIX}LAPACKE_[a-z1-9]*[^ (]*)" "\\1${SYMBOLSUFFIX}" LAPACKE_H_CONTENTS_NEW "${LAPACKE_H_CONTENTS}")
724+
string(REPLACE "#define${SYMBOLSUFFIX}" "#define" LAPACKE_H_CONTENTS ${LAPACKE_H_CONTENTS_NEW})
725+
string(REPLACE "LAPACKE_malloc${SYMBOLSUFFIX}" "LAPACKE_malloc" LAPACKE_H_CONTENTS_NEW ${LAPACKE_H_CONTENTS})
726+
string(REPLACE "LAPACKE_free${SYMBOLSUFFIX}" "LAPACKE_free" LAPACKE_H_CONTENTS ${LAPACKE_H_CONTENTS_NEW})
727+
set(LAPACKE_H_CONTENTS_NEW ${LAPACKE_H_CONTENTS})
728+
endif()
729+
file(WRITE ${LAPACKE_H} "${LAPACKE_H_CONTENTS_NEW}")
730+
install (FILES ${LAPACKE_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
731+
message (STATUS "Generating lapack.h in ${CMAKE_INSTALL_INCLUDEDIR}")
732+
set(LAPACK_H ${CMAKE_BINARY_DIR}/generated/lapack.h)
733+
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapack.h LAPACK_H_CONTENTS)
734+
if (NOT ${SYMBOLPREFIX} STREQUAL "")
735+
string(REGEX REPLACE "(LAPACK_[a-z1-9]*[ \(][.\)]*)" "${SYMBOLPREFIX}\\1" LAPACK_H_CONTENTS_NEW "${LAPACK_H_CONTENTS}")
736+
set(LAPACK_H_CONTENTS ${LAPACK_H_CONTENTS_NEW})
737+
endif()
738+
if (NOT ${SYMBOLSUFFIX} STREQUAL "")
739+
string(REGEX REPLACE "(${SYMBOLPREFIX}LAPACK_[a-z1-9]*)([ \(].\)" "\\1${SYMBOLSUFFIX}\\2" LAPACK_H_CONTENTS_NEW "${LAPACK_H_CONTENTS}")
740+
endif()
741+
file(WRITE ${LAPACK_H} "${LAPACK_H_CONTENTS_NEW}")
742+
install (FILES ${LAPACK_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
743+
endif()
711744
endif()
712745

713746
# Install pkg-config files

CONTRIBUTORS.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
* Annop Wongwathanarat <annop.wongwathanarat@arm.com>
3030
* Optimizations and other improvements targeting AArch64
3131

32+
* Anna Mayne <anna.mayne@arm.com>
33+
* Optimizations and other improvements targeting AArch64
34+
3235
## Previous Developers
3336

3437
* Zaheer Chothia <zaheer.chothia@gmail.com>
@@ -267,3 +270,5 @@ In chronological order:
267270
* [2025-05-29] Optimise axpby kernel for RISCV64_ZVL256B
268271
* [2025-06-05] Optimise hbmv kernel for RISCV64_ZVL256B
269272

273+
* Anna Mayne <anna.mayne@arm.com>
274+
* [2025-11-19] Update thread throttling profile for SGEMV on NEOVERSEV1 and NEOVERSEV2

Jenkinsfile.pwr

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,31 @@
11
pipeline {
2-
agent {
3-
docker {
4-
image 'osuosl/ubuntu-ppc64le:18.04'
5-
}
6-
}
2+
agent none
73
stages {
8-
stage('Build') {
4+
stage('GCC build') {
5+
agent {
6+
docker {
7+
image 'osuosl/ubuntu-ppc64le:18.04' // gcc 7, gfortran 7
8+
}
9+
}
910
steps {
11+
checkout scm
1012
sh 'sudo apt update'
1113
sh 'sudo apt install gfortran -y'
1214
sh 'make clean && make'
1315
}
1416
}
17+
stage('Clang build') {
18+
agent {
19+
docker {
20+
image 'osuosl/ubuntu-ppc64le:20.04' // clang 10, gfortran 9
21+
}
22+
}
23+
steps {
24+
checkout scm
25+
sh 'sudo apt update'
26+
sh 'sudo apt install -y clang gfortran'
27+
sh 'make clean && make CC=clang'
28+
}
29+
}
1530
}
1631
}

Makefile.install

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,27 @@ endif
9393

9494
ifneq ($(OSNAME), AIX)
9595
ifneq ($(NO_LAPACKE), 1)
96+
@cp $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke.h lapacke_h.tmp
97+
ifdef SYMBOLPREFIX
98+
@sed 's/LAPACKE_[a-z1-9].[^() ]*/$(SYMBOLPREFIX)&/g' lapacke_h.tmp > lapacke.tmp2
99+
@mv lapacke.tmp2 lapacke_h.tmp
100+
endif
101+
ifdef SYMBOLSUFFIX
102+
@sed 's/LAPACKE_[a-z1-9].[^() ]*/&$(SYMBOLSUFFIX)/g' lapacke_h.tmp > lapacke.tmp2
103+
@mv lapacke.tmp2 lapacke_h.tmp
104+
endif
105+
@-install -m644 lapacke_h.tmp "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke.h"
96106
@echo Copying LAPACKE header files to $(DESTDIR)$(OPENBLAS_INCLUDE_DIR)
97-
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapack.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapack.h"
98-
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke.h"
107+
@cp $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapack.h lapack_h.tmp
108+
ifdef SYMBOLPREFIX
109+
@sed 's/LAPACK_[a-z1-9]*(\.\.\.)/$(SYMBOLPREFIX)&/g' lapack_h.tmp > lapack.tmp2
110+
@mv lapack.tmp2 lapack_h.tmp
111+
endif
112+
ifdef SYMBOLSUFFIX
113+
@sed 's/\(#define $(SYMBOLPREFIX)LAPACK_[a-z1-9].*\)\((...)\)/\1$(SYMBOLSUFFIX)\2/g' lapack_h.tmp > lapack.tmp2
114+
@mv lapack.tmp2 lapack_h.tmp
115+
endif
116+
@-install -m644 lapack_h.tmp "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapack.h"
99117
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_config.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_config.h"
100118
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_mangling_with_flags.h.in "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_mangling.h"
101119
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_utils.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_utils.h"

azure-pipelines.yml

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ jobs:
155155
156156
- job: OSX_OpenMP
157157
pool:
158-
vmImage: 'macOS-13'
158+
vmImage: 'macOS-14'
159159
steps:
160160
- script: |
161161
brew update
@@ -165,7 +165,7 @@ jobs:
165165
166166
- job: OSX_GCC_Nothreads
167167
pool:
168-
vmImage: 'macOS-13'
168+
vmImage: 'macOS-14'
169169
steps:
170170
- script: |
171171
brew update
@@ -221,7 +221,7 @@ jobs:
221221
222222
- job: OSX_dynarch_cmake
223223
pool:
224-
vmImage: 'macOS-13'
224+
vmImage: 'macOS-14'
225225
variables:
226226
LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
227227
LIBRARY_PATH: /usr/local/opt/llvm/lib
@@ -268,7 +268,7 @@ jobs:
268268
269269
- job: OSX_NDK_ARMV7
270270
pool:
271-
vmImage: 'macOS-13'
271+
vmImage: 'macOS-14'
272272
steps:
273273
- script: |
274274
brew update
@@ -278,35 +278,37 @@ jobs:
278278
279279
- job: OSX_IOS_ARMV8
280280
pool:
281-
vmImage: 'macOS-13'
281+
vmImage: 'macOS-14'
282282
variables:
283-
CC: /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
284-
CFLAGS: -O2 -Wno-macro-redefined -isysroot /Applications/Xcode_14.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.2.sdk -arch arm64 -miphoneos-version-min=10.0
283+
CC: /Applications/Xcode_16.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
284+
CFLAGS: -O2 -Wno-macro-redefined -isysroot /Applications/Xcode_16.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.2.sdk -arch arm64 -miphoneos-version-min=10.0
285285
steps:
286286
- script: |
287+
ls /Applications/Xcode_16.2.app/Contents/Developer/Platforms/
288+
ls /Applications/Xcode_16.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
287289
make TARGET=ARMV8 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1
288290
289291
- job: OSX_IOS_ARMV7
290292
pool:
291-
vmImage: 'macOS-13'
293+
vmImage: 'macOS-14'
292294
variables:
293-
CC: /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
294-
CFLAGS: -O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode_14.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.2.sdk -arch armv7 -miphoneos-version-min=5.1
295+
CC: /Applications/Xcode_16.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
296+
CFLAGS: -O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode_16.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.2.sdk -arch armv7 -miphoneos-version-min=5.1
295297
steps:
296298
- script: |
297299
make TARGET=ARMV7 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1
298300
299301
- job: OSX_xbuild_DYNAMIC_ARM64
300302
pool:
301-
vmImage: 'macOS-13'
303+
vmImage: 'macOS-14'
302304
variables:
303-
CC: /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
304-
CFLAGS: -O2 -Wno-macro-redefined -isysroot /Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -arch arm64
305+
CC: /Applications/Xcode_16.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
306+
CFLAGS: -O2 -Wno-macro-redefined -isysroot /Applications/Xcode_16.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk -arch arm64
305307
steps:
306308
- script: |
307-
ls /Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
309+
ls /Applications/Xcode_16.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
308310
/Applications/Xcode_12.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 --print-supported-cpus
309-
/Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang --version
311+
/Applications/Xcode_16.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang --version
310312
make TARGET=ARMV8 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1
311313
312314
- job: ALPINE_MUSL

common.h

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -362,18 +362,6 @@ typedef int blasint;
362362
#define MAX_CPU_NUMBER 2
363363
#endif
364364

365-
#if defined(OS_SUNOS)
366-
#define YIELDING thr_yield()
367-
#endif
368-
369-
#if defined(OS_WINDOWS)
370-
#if defined(_MSC_VER) && !defined(__clang__)
371-
#define YIELDING YieldProcessor()
372-
#else
373-
#define YIELDING SwitchToThread()
374-
#endif
375-
#endif
376-
377365
#if defined(ARMV7) || defined(ARMV6) || defined(ARMV8) || defined(ARMV5)
378366
#define YIELDING __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop; \n");
379367
#endif
@@ -398,14 +386,26 @@ typedef int blasint;
398386
#endif
399387
#endif
400388

401-
402389
#ifdef __EMSCRIPTEN__
403390
#define YIELDING
404391
#endif
405392

393+
#if defined(_MSC_VER) && !defined(__clang__)
394+
#undef YIELDING // MSVC doesn't support assembly code
395+
#define YIELDING YieldProcessor()
396+
#endif
397+
406398
#ifndef YIELDING
399+
#if defined(OS_SUNOS)
400+
#define YIELDING thr_yield()
401+
402+
#elif defined(OS_WINDOWS)
403+
#define YIELDING SwitchToThread()
404+
405+
#else // assume POSIX.1-2008
407406
#define YIELDING sched_yield()
408407
#endif
408+
#endif
409409

410410
/***
411411
To alloc job_t on heap or stack.
@@ -765,7 +765,7 @@ static __inline int readenv_atoi(char *env) {
765765
return 0;
766766
}
767767
#else
768-
#ifdef OS_WINDOWS
768+
#if defined(OS_WINDOWS) && !defined(OS_CYGWIN_NT)
769769
static __inline int readenv_atoi(char *env) {
770770
env_var_t p;
771771
return readenv(p,env) ? 0 : atoi(p);

common_level3.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,31 @@ void ssyrk_direct_alpha_betaLT(BLASLONG N, BLASLONG K,
110110
float beta,
111111
float * C, BLASLONG strideC);
112112

113+
void ssyr2k_direct_alpha_betaUN(BLASLONG N, BLASLONG K,
114+
float alpha,
115+
float * A, BLASLONG strideA,
116+
float * B, BLASLONG strideB,
117+
float beta,
118+
float * R, BLASLONG strideR);
119+
void ssyr2k_direct_alpha_betaUT(BLASLONG N, BLASLONG K,
120+
float alpha,
121+
float * A, BLASLONG strideA,
122+
float * B, BLASLONG strideB,
123+
float beta,
124+
float * R, BLASLONG strideR);
125+
void ssyr2k_direct_alpha_betaLN(BLASLONG N, BLASLONG K,
126+
float alpha,
127+
float * A, BLASLONG strideA,
128+
float * B, BLASLONG strideB,
129+
float beta,
130+
float * R, BLASLONG strideR);
131+
void ssyr2k_direct_alpha_betaLT(BLASLONG N, BLASLONG K,
132+
float alpha,
133+
float * A, BLASLONG strideA,
134+
float * B, BLASLONG strideB,
135+
float beta,
136+
float * R, BLASLONG strideR);
137+
113138
int sgemm_direct_performant(BLASLONG M, BLASLONG N, BLASLONG K);
114139

115140
int shgemm_beta(BLASLONG, BLASLONG, BLASLONG, float,

common_param.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,10 @@ int (*shgemv_t) (BLASLONG, BLASLONG, float, hfloat16 *, BLASLONG, hfloat16 *, BL
269269
void (*ssyrk_direct_alpha_betaUT) (BLASLONG, BLASLONG, float, float *, BLASLONG, float, float *, BLASLONG);
270270
void (*ssyrk_direct_alpha_betaLN) (BLASLONG, BLASLONG, float, float *, BLASLONG, float, float *, BLASLONG);
271271
void (*ssyrk_direct_alpha_betaLT) (BLASLONG, BLASLONG, float, float *, BLASLONG, float, float *, BLASLONG);
272+
void (*ssyr2k_direct_alpha_betaUN) (BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float, float *, BLASLONG);
273+
void (*ssyr2k_direct_alpha_betaUT) (BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float, float *, BLASLONG);
274+
void (*ssyr2k_direct_alpha_betaLN) (BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float, float *, BLASLONG);
275+
void (*ssyr2k_direct_alpha_betaLT) (BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float, float *, BLASLONG);
272276
#endif
273277

274278

common_s.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@
6060
#define SSYRK_DIRECT_ALPHA_BETA_UT ssyrk_direct_alpha_betaUT
6161
#define SSYRK_DIRECT_ALPHA_BETA_LN ssyrk_direct_alpha_betaLN
6262
#define SSYRK_DIRECT_ALPHA_BETA_LT ssyrk_direct_alpha_betaLT
63+
#define SSYR2K_DIRECT_ALPHA_BETA_UN ssyr2k_direct_alpha_betaUN
64+
#define SSYR2K_DIRECT_ALPHA_BETA_UT ssyr2k_direct_alpha_betaUT
65+
#define SSYR2K_DIRECT_ALPHA_BETA_LN ssyr2k_direct_alpha_betaLN
66+
#define SSYR2K_DIRECT_ALPHA_BETA_LT ssyr2k_direct_alpha_betaLT
6367

6468
#define SGEMM_ONCOPY sgemm_oncopy
6569
#define SGEMM_OTCOPY sgemm_otcopy
@@ -240,6 +244,10 @@
240244
#define SSYRK_DIRECT_ALPHA_BETA_UT gotoblas -> ssyrk_direct_alpha_betaUT
241245
#define SSYRK_DIRECT_ALPHA_BETA_LN gotoblas -> ssyrk_direct_alpha_betaLN
242246
#define SSYRK_DIRECT_ALPHA_BETA_LT gotoblas -> ssyrk_direct_alpha_betaLT
247+
#define SSYR2K_DIRECT_ALPHA_BETA_UN gotoblas -> ssyr2k_direct_alpha_betaUN
248+
#define SSYR2K_DIRECT_ALPHA_BETA_UT gotoblas -> ssyr2k_direct_alpha_betaUT
249+
#define SSYR2K_DIRECT_ALPHA_BETA_LN gotoblas -> ssyr2k_direct_alpha_betaLN
250+
#define SSYR2K_DIRECT_ALPHA_BETA_LT gotoblas -> ssyr2k_direct_alpha_betaLT
243251
#endif
244252

245253
#define SGEMM_ONCOPY gotoblas -> sgemm_oncopy

docs/install.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -217,30 +217,34 @@ in this section, since the process for each is quite different.
217217
For Visual Studio, you can use CMake to generate Visual Studio solution files;
218218
note that you will need at least CMake 3.11 for linking to work correctly).
219219

220-
Note that you need a Fortran compiler if you plan to build and use the LAPACK
221-
functions included with OpenBLAS. The sections below describe using either
220+
Note that you need a Fortran compiler if you plan to build and use the latest version
221+
of the LAPACK functions included with OpenBLAS. (If you do not have a Fortran compiler
222+
installed, you can build an older version of the LAPACK sources that has been converted
223+
to C - but its performance will likely be slower and accuracy may be poorer too.)
224+
The sections below describe using either
222225
`flang` as an add-on to clang/LLVM or `gfortran` as part of MinGW for this
223226
purpose. If you want to use the Intel Fortran compiler (`ifort` or `ifx`) for
224227
this, be sure to also use the Intel C compiler (`icc` or `icx`) for building
225228
the C parts, as the ABI imposed by `ifort` is incompatible with MSVC
226229

227230
A fully-optimized OpenBLAS that can be statically or dynamically linked to your
228231
application can currently be built for the 64-bit architecture with the LLVM
229-
compiler infrastructure. We're going to use [Miniconda3](https://docs.anaconda.com/miniconda/)
232+
compiler infrastructure. We're going to use [Miniforge3] the pre-configured
233+
and more versatile alternative to [Miniconda](https://docs.anaconda.com/miniconda/)
230234
to grab all of the tools we need, since some of them are in an experimental
231235
status. Before you begin, you'll need to have Microsoft Visual Studio 2015 or
232236
newer installed.
233237

234-
1. Install Miniconda3 for 64-bit Windows using `winget install --id Anaconda.Miniconda3`,
235-
or easily download from [conda.io](https://docs.conda.io/en/latest/miniconda.html).
236-
2. Open the "Anaconda Command Prompt" now available in the Start Menu, or at `%USERPROFILE%\miniconda3\shell\condabin\conda-hook.ps1`.
238+
1. Install Miniforge for 64-bit Windows with the latest version of the installer Miniforge3-Windows-x86_64.exe
239+
available on [github.com](https://github.com/conda-forge/miniforge/releases/)
240+
2. Open the "Miniforge Command Prompt" now available in the Start Menu, or at `%USERPROFILE%\miniforge3\shell\condabin\conda-hook.ps1`.
237241
3. In that command prompt window, use `cd` to change to the directory where you want to build OpenBLAS.
238242
4. Now install all of the tools we need:
239243
```
240244
conda update -n base conda
241-
conda config --add channels conda-forge
242-
conda install -y cmake flang clangdev perl libflang ninja
245+
conda install -y cmake flang_win-64 clangdev perl libflang ninja
243246
```
247+
(if you want to build with OpenMP support, add `llvm-openmp` and `llvm-openmp-fortran`)
244248
5. Still in the Anaconda Command Prompt window, activate the 64-bit MSVC environment with `vcvarsall x64`.
245249
On Windows 11 with Visual Studio 2022, this would be done by invoking:
246250

0 commit comments

Comments
 (0)