Commit Graph
10618 Commits
Author SHA1 Message Date
Martin Kroeker efab2a2fde Merge pull request #5929 from moluopro/remove-misspelled-bdsdc-sources
Fix CMake dynamic-arch fallback and remove unused BDSDC source copies
2026-07-21 18:40:25 +02:00
Martin Kroeker 0b54dd1154 Merge pull request #5933 from martin-frbg/issue5932
Fix compilation with MinGW-W64-Clang under Windows-Arm64
2026-07-20 07:50:42 +02:00
Martin Kroeker d496ab17c2 Merge pull request #5882 from KenoAIStaging/kf/cancellation
Add an asynchronous cancellation API for in-flight operations
2026-07-20 00:25:16 +02:00
Martin Kroeker 4ab4f1eae9 Fix identification of MinGW64 on WoA 2026-07-20 00:20:05 +02:00
Martin Kroeker 96d60aa6a8 Fix version check and prefix llvm backend option 2026-07-20 00:14:23 +02:00
Martin Kroeker 0d928ca275 stack-hazard-size is a llvm backend option 2026-07-20 00:09:07 +02:00
Martin Kroeker 544afb15d6 stack-hazard-size is a llvm backend option 2026-07-20 00:06:48 +02:00
Martin Kroeker f959027a06 Merge pull request #5925 from martin-frbg/fix_getarch_woa
Fix getarch build error in Windows-on-Arm
2026-07-19 17:57:39 +02:00
moluopro 1b64851291 RISCV64-CI: Backport QEMU clone_lock fix 2026-07-19 23:32:40 +08:00
moluopro 43f18d82f5 AzureCI: Parallelize macOS CMake build 2026-07-19 23:32:22 +08:00
moluopro 6421c17643 AzureCI: Restore SkylakeX fallback coverage
Keep SkylakeX in the dynamic list with NO_AVX512 so the CMake job verifies that it is demoted to Haswell.
2026-07-19 20:48:28 +08:00
moluopro 2f21ad9282 CMake: Use effective core for fallback kernels
Keep the logical target for dynamic dispatch names while selecting kernel sources and capabilities from the core chosen by getarch after ISA restrictions.
2026-07-19 20:48:10 +08:00
moluopro e21bffc882 AzureCI: Align dynamic list with NO_AVX512 2026-07-19 18:59:06 +08:00
moluopro c7d1f1381c AzureCI: Fix DYNAMIC_LIST in CMake jobs
Pass DYNAMIC_LIST as a semicolon-separated CMake list so each target becomes a separate preprocessor definition. Make the affected scripts fail immediately instead of masking configuration failures.
2026-07-19 14:38:03 +08:00
Keno FischerandClaude Fable 5 7a07c8e1f4 Add an asynchronous cancellation API for in-flight operations
Long-running BLAS calls (a large gemm can run for minutes) cannot
currently be interrupted: callers embedding OpenBLAS (e.g. the Julia
runtime responding to a user's ^C) can only wait for completion or kill
the process. Add a minimal cooperative cancellation protocol:

Every thread owns a pointer-sized generation slot in thread-local
storage, whose stable address is returned by openblas_cancel_token().
Instrumented compute drivers advance the slot to a fresh even
generation at operation entry on the issuing thread (forwarding the
slot and generation to worker threads through blas_arg_t) and poll it
at block granularity. openblas_cancel(token, loaded_token) - callable
from any thread - sets the cancel bit (bit 0) iff the slot still holds
loaded_token, so a canceller that loaded the value while an operation
was in flight stops exactly that operation, while stale or racing
requests either miss or dirty an already-dead generation, both
harmless. There is no object lifecycle: nothing to allocate, bind,
reset, or free.

A cancelled operation returns quickly, leaving its output buffer in an
unspecified partially-updated state that the caller must discard; every
synchronization point in the threaded driver is still executed, so
sibling threads never stall and the library remains consistent for
subsequent calls. Coverage: the level-3 gemm/symm/hemm drivers
(level3.c and level3_thread.c).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012nCkyKUguncLLJrH9K5o7m
2026-07-19 04:20:28 +00:00
moluopro 14d78d31c8 Remove unused misspelled DBDSDC source copy 2026-07-19 11:33:01 +08:00
moluopro e3b9b82636 Remove unused misspelled SBDSDC source copy 2026-07-19 11:32:53 +08:00
Martin Kroeker 3f55cbce38 Fix array/pointer argument mismatch on WoA 2026-07-17 14:31:37 +02:00
Martin Kroeker a7d62fe5de Set version to 0.3.34.dev 2026-07-16 22:06:49 +02:00
Martin Kroeker c604fcf79c Set version to 0.3.34.dev 2026-07-16 22:06:08 +02:00
Martin Kroeker 59907029f6 Merge pull request #5923 from OpenMathLib/release-0.3.0
Merge back from 0.3.34 release to copy tag
2026-07-16 22:05:10 +02:00
Martin Kroeker e0166008be Update version to 0.3.34
arm64 graviton cirun / build (cmake, gfortran) (push) Canceled after 0s
arm64 graviton cirun / build (make, gfortran) (push) Canceled after 0s
Nightly-Homebrew-Build / build-OpenBLAS-with-Homebrew (push) Canceled after 0s
c910v qemu test / TEST (riscv64-linux-gnu, NO_SHARED=1 TARGET=C910V, C910V, riscv64-unknown-linux-gnu) (push) Canceled after 0s
c910v qemu test / TEST (riscv64-linux-gnu, NO_SHARED=1 TARGET=RISCV64_GENERIC, RISCV64_GENERIC, riscv64-linux-gnu) (push) Canceled after 0s
Run codspeed benchmarks / benchmarks (make, gfortran, ubuntu-22.04, 3.12) (push) Canceled after 0s
continuous build / build (cmake, clang, flang, ubuntu-latest) (push) Canceled after 0s
continuous build / build (cmake, clang, gfortran, macos-latest) (push) Canceled after 0s
continuous build / build (cmake, clang, gfortran, ubuntu-24.04-arm) (push) Canceled after 0s
continuous build / build (cmake, clang, gfortran, ubuntu-latest) (push) Canceled after 0s
continuous build / build (cmake, clang-21, flang, ubuntu-latest) (push) Canceled after 0s
continuous build / build (cmake, clang-21, gfortran, ubuntu-24.04-arm) (push) Canceled after 0s
continuous build / build (cmake, clang-21, gfortran, ubuntu-latest) (push) Canceled after 0s
continuous build / build (cmake, gcc, flang, ubuntu-latest) (push) Canceled after 0s
continuous build / build (cmake, gcc, gfortran, ubuntu-24.04-arm) (push) Canceled after 0s
continuous build / build (cmake, gcc, gfortran, ubuntu-latest) (push) Canceled after 0s
continuous build / build (make, clang, flang, ubuntu-latest) (push) Canceled after 0s
continuous build / build (make, clang, gfortran, macos-latest) (push) Canceled after 0s
continuous build / build (make, clang, gfortran, ubuntu-24.04-arm) (push) Canceled after 0s
continuous build / build (make, clang, gfortran, ubuntu-latest) (push) Canceled after 0s
continuous build / build (make, clang-21, flang, ubuntu-latest) (push) Canceled after 0s
continuous build / build (make, clang-21, gfortran, ubuntu-24.04-arm) (push) Canceled after 0s
continuous build / build (make, clang-21, gfortran, ubuntu-latest) (push) Canceled after 0s
continuous build / build (make, gcc, flang, ubuntu-latest) (push) Canceled after 0s
apple m / build-windows (cmake, gfortran, 0, 0) (push) Canceled after 0s
continuous build / build (make, gcc, gfortran, ubuntu-24.04-arm) (push) Canceled after 0s
apple m / build-windows (cmake, gfortran, 0, 1) (push) Canceled after 0s
continuous build / build (make, gcc, gfortran, ubuntu-latest) (push) Canceled after 0s
continuous build / msys2 (None, mingw-w64-ucrt-x86_64-fc, int32, UCRT64, mingw-w64-ucrt-x86_64) (push) Canceled after 0s
apple m / build-windows (cmake, gfortran, 1, 0) (push) Canceled after 0s
continuous build / msys2 (Release, <nil>, int32, MINGW32, mingw-w64-i686) (push) Canceled after 0s
apple m / build-windows (cmake, gfortran, 1, 1) (push) Canceled after 0s
continuous build / msys2 (Release, mingw-w64-clang-x86_64-fc, int32, CLANG64, mingw-w64-clang-x86_64) (push) Canceled after 0s
continuous build / msys2 (Release, mingw-w64-clang-x86_64-fc, int64, -DBINARY=64 -DINTERFACE64=1, CLANG64, mingw-w64-clang-x86_64) (push) Canceled after 0s
apple m / build-windows (make, gfortran, 0, 0) (push) Canceled after 0s
continuous build / msys2 (Release, mingw-w64-ucrt-x86_64-fc, int32, UCRT64, mingw-w64-ucrt-x86_64) (push) Canceled after 0s
continuous build / msys2 (Release, mingw-w64-ucrt-x86_64-fc, int64, -DBINARY=64 -DINTERFACE64=1, UCRT64, mingw-w64-ucrt-x86_64) (push) Canceled after 0s
apple m / build-windows (make, gfortran, 0, 1) (push) Canceled after 0s
continuous build / linux_thread_stress (openmp) (push) Canceled after 0s
apple m / build-windows (make, gfortran, 1, 0) (push) Canceled after 0s
continuous build / linux_thread_stress (pthread) (push) Canceled after 0s
continuous build / linux_thread_sanitizer (push) Canceled after 0s
apple m / build-windows (make, gfortran, 1, 1) (push) Canceled after 0s
continuous build / linux_thread_sanitizer_openmp (push) Canceled after 0s
apple m / xbuild-x86_64 (push) Canceled after 0s
continuous build / msys2_thread_stress (push) Canceled after 0s
apple m / xbuild-ios (push) Canceled after 0s
apple m / xbuild-ios32 (push) Canceled after 0s
continuous build / cross_build (DYNAMIC_ARCH=1 TARGET=GENERIC, mips64el, mips64el-linux-gnuabi64) (push) Canceled after 0s
continuous build / cross_build (TARGET=EV4, alpha, alpha-linux-gnu) (push) Canceled after 0s
continuous build / cross_build (TARGET=MIPS1004K, mipsel, mipsel-linux-gnu) (push) Canceled after 0s
continuous build / cross_build (TARGET=RISCV64_GENERIC, riscv64, riscv64-linux-gnu) (push) Canceled after 0s
continuous build / neoverse_build (push) Canceled after 0s
continuous build / neoverse_n1_build (push) Canceled after 0s
continuous build / neoverse_n1_omp_build (push) Canceled after 0s
continuous build / neoverse_n1_ilp64_build (push) Canceled after 0s
harmonyos / build (push) Canceled after 0s
loongarch64 qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=GENERIC, DYNAMIC_ARCH, loongarch64-linux-gnu) (push) Canceled after 0s
loongarch64 qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LA264, LA264, loongarch64-linux-gnu) (push) Canceled after 0s
loongarch64 qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LA464, LA464, loongarch64-linux-gnu) (push) Canceled after 0s
loongarch64 qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LA64_GENERIC, LA64_GENERIC, loongarch64-linux-gnu) (push) Canceled after 0s
loongarch64 qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON2K1000, LOONGSON2K1000, loongarch64-linux-gnu) (push) Canceled after 0s
loongarch64 qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON3R5, LOONGSON3R5, loongarch64-linux-gnu) (push) Canceled after 0s
loongarch64 qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSONGENERIC, LOONGSONGENERIC, loongarch64-linux-gnu) (push) Canceled after 0s
loongarch64 clang qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=GENERIC, DYNAMIC_ARCH) (push) Canceled after 0s
loongarch64 clang qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LA264, LA264) (push) Canceled after 0s
loongarch64 clang qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LA464, LA464) (push) Canceled after 0s
loongarch64 clang qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LA64_GENERIC, LA64_GENERIC) (push) Canceled after 0s
loongarch64 clang qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON2K1000, LOONGSON2K1000) (push) Canceled after 0s
loongarch64 clang qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON3R5, LOONGSON3R5) (push) Canceled after 0s
loongarch64 clang qemu test / TEST (NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSONGENERIC, LOONGSONGENERIC) (push) Canceled after 0s
mips64 qemu test / TEST (NO_SHARED=1 TARGET=I6400, I6400, mipsisa64r6el-linux-gnuabi64) (push) Canceled after 0s
mips64 qemu test / TEST (NO_SHARED=1 TARGET=I6500, I6500, mipsisa64r6el-linux-gnuabi64) (push) Canceled after 0s
mips64 qemu test / TEST (NO_SHARED=1 TARGET=MIPS64_GENERIC, MIPS64_GENERIC, mips64el-linux-gnuabi64) (push) Canceled after 0s
mips64 qemu test / TEST (NO_SHARED=1 TARGET=P6600, P6600, mipsisa64r6el-linux-gnuabi64) (push) Canceled after 0s
mips64 qemu test / TEST (NO_SHARED=1 TARGET=SICORTEX, SICORTEX, mips64el-linux-gnuabi64) (push) Canceled after 0s
riscv64 zvl256b qemu test / TEST (TARGET=RISCV64_GENERIC BINARY=64 ARCH=riscv64 DYNAMIC_ARCH=1, rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=256,elen=64, DYNAMIC_ARCH=1) (push) Canceled after 0s
riscv64 zvl256b qemu test / TEST (TARGET=RISCV64_ZVL128B BINARY=64 ARCH=riscv64, rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=128,elen=64, RISCV64_ZVL128B) (push) Canceled after 0s
riscv64 zvl256b qemu test / TEST (TARGET=RISCV64_ZVL256B BINARY=64 ARCH=riscv64 BUILD_BFLOAT16=1 BUILD_HFLOAT16=1, rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=256,elen=64,zfh=true,zvfh=true,zvfbfwma=true, RISCV64_ZVL256B) (push) Canceled after 0s
v0.3.34
2026-07-16 21:53:40 +02:00
Martin Kroeker 45e68d2240 Update version to 0.3.34 2026-07-16 21:52:30 +02:00
Martin Kroeker c13a003e40 Merge pull request #5922 from OpenMathLib/develop
Update from develop for 0.3.34 release
2026-07-16 21:51:15 +02:00
Martin Kroeker 07690084bf Update changelog for 0.3.34 (#5897)
* Update for 0.3.34
2026-07-16 21:48:07 +02:00
Martin Kroeker 55d6e6b98c Merge pull request #5921 from martin-frbg/issue5905
Mark temporaries as volatile to avoid SIGBUS in multithreaded builds with gcc15+ on 32bit FreeBSD/x86
2026-07-16 21:39:26 +02:00
Martin Kroeker bf7f06d9ac Mark temporaries as volatile to avoid SIGBUS in multithreading with gcc15+ on 32bit FreeBSD/x86 2026-07-16 18:42:23 +02:00
Martin Kroeker 739b2f084c Mark temporaries as volatile to avoid SIGBUS in multithreading with gcc15+ on 32bit FreeBSD/x86 2026-07-16 18:40:45 +02:00
Martin Kroeker 9ce1d6ff2a Mark temporaties as volatile to avoid SIGBUS in multithreading with gcc15+ on 32bit FreeBSD/x86 2026-07-16 18:39:06 +02:00
Martin Kroeker 15351019ea Mark subbuffer as volatile to fix SIGBUS in multithreading with gcc15+ on 32bit FreeBSD/x86 2026-07-16 18:35:14 +02:00
Martin Kroeker dd69b9d0ce Mark floats as volatile to fix SIGBUS in multithreading with gcc15+ on 32bit FreeBSD/x86 2026-07-16 18:33:19 +02:00
Martin Kroeker cefdaed87c translate BSD's i386 hostarch name and automatically set BINARY=32 for it 2026-07-16 18:30:17 +02:00
Martin Kroeker 43f9441317 Merge pull request #5920 from martin-frbg/lapack1245
Avoid large intermediates in (C/Z)LARTG (Reference-LAPACK PR 1245)
2026-07-16 01:12:38 +02:00
Martin Kroeker 53b14986de Avoid large intermediates in (C/Z)LARTG (Reference-LAPACK PR 1245) 2026-07-15 20:59:17 +02:00
Martin Kroeker 3e48730742 Add transpose support for C in GEADD (fixes #4646) (#5913)
* Add transpose support for C in GEADD (fixes #4646)

Extends GEADD to support independent transposition of both A and C,
matching the behavior of cuBLAS's geam and Apple's Accelerate geadd.
Previously only A could be transposed.

- Add transc parameter across cblas.h, common_interface.h,
  common_level3.h, common_param.h
- Add transc handling to interface/geadd.c and interface/zgeadd.c
- Extend kernel/generic/geadd.c and kernel/generic/zgeadd.c with
  stride logic for transposed C
- Add transpose test coverage (hand-verified 2x2 cases and randomized
  large-matrix tests) for sgeadd, dgeadd, cgeadd, zgeadd

* Add self to CONTRIBUTORS.md
2026-07-15 18:34:43 +02:00
Martin Kroeker dc3aa2cbd9 Fix non-SVE ARM64 potentially using non-zeroed register in SDOT/DDOT accumulation (#5918)
* Zero d0 register as it may not be identical with OUT, amend clobber list

* Add sdot/ddot reproducer from issue 5917 as ARM64-specific utest
2026-07-15 17:30:11 +02:00
aadityansha06 aade7ec2ff Add self to CONTRIBUTORS.md 2026-07-15 17:12:31 +05:30
aadityansha06 2c6bf39e4e Add transpose support for C in GEADD (fixes #4646)
Extends GEADD to support independent transposition of both A and C,
matching the behavior of cuBLAS's geam and Apple's Accelerate geadd.
Previously only A could be transposed.

- Add transc parameter across cblas.h, common_interface.h,
  common_level3.h, common_param.h
- Add transc handling to interface/geadd.c and interface/zgeadd.c
- Extend kernel/generic/geadd.c and kernel/generic/zgeadd.c with
  stride logic for transposed C
- Add transpose test coverage (hand-verified 2x2 cases and randomized
  large-matrix tests) for sgeadd, dgeadd, cgeadd, zgeadd
2026-07-15 17:12:31 +05:30
Martin Kroeker b338322e9a Merge pull request #5900 from mpwaser/fix/c910v-qemu-utest-timeout
Relax C910V qemu utest timeout
2026-07-15 11:27:06 +02:00
Martin Kroeker 6604a7277c Merge pull request #5916 from martin-frbg/lapack1289
Fix workspace queries for TZRZF/UNMRZ in ?GELSY (Reference-LAPACK PR1289/1325)
2026-07-15 07:56:46 +02:00
Martin Kroeker 75b8a2ce93 Fix parameter queries for TZRZF/UNMRZ in ?GELSY (Reference-LAPACK PR 1289&1325) 2026-07-14 22:14:02 +02:00
Martin Kroeker b28cdccd2d Merge pull request #5915 from martin-frbg/fixup5802
Rework the -mpwr10 option to be only applied to POWER9/10 on FreeBSD
2026-07-14 22:05:19 +02:00
Martin Kroeker 036e835019 Merge pull request #5912 from martin-frbg/lapack1288
Fix seed advancement in SLARUV/DLARUV (Reference-LAPACK PR 1288)
2026-07-14 20:30:43 +02:00
Martin Kroeker fd88cac200 Merge pull request #5911 from martin-frbg/lapack1305
Replace HUGE intrinsic in ?TGSJA for consistency (Reference-LAPACK PR 1305)
2026-07-14 17:58:23 +02:00
Martin Kroeker 87aac59e87 Rework the -mpwr10 option to be only applied to POWER9/10 on FreeBSD 2026-07-14 16:27:16 +02:00
Martin Kroeker 1e14cc90f8 Merge pull request #5910 from martin-frbg/lapack1298
Fix test failures in ?CHKLQ when NB=1 with M=N (Reference-LAPACK PR 1298)
2026-07-14 15:44:45 +02:00
Martin Kroeker 136a714687 Merge pull request #5914 from martin-frbg/u74detect
Add cpu detection for Sifive U74
2026-07-14 15:20:31 +02:00
Martin Kroeker a5dcb2a8a8 Merge pull request #5909 from hmeiland/riscv64-blas-set-parameter
RISC-V: cache-aware GEMM blocking (get_L2_size + blas_set_parameter)
2026-07-14 12:27:10 +02:00
Martin Kroeker 41aad1107a Add Sifive U74 2026-07-14 07:30:47 +02:00
Martin Kroeker 873f005957 Merge pull request #5903 from hmeiland/u74-gemm-4x4-kernel
Add SiFive U74 target with a scalar 4×4 register-tiled GEMM kernel
2026-07-14 07:27:12 +02:00