134 Commits
Author SHA1 Message Date
Martin Kroeker 0944e9e7c1 Ensure a safe margin between work arrays in the buffer even when GEMM_PQR is small 2026-08-20 22:32:08 +02:00
Martin Kroeker 146beeda59 Ensure a safe margin between work arrays in the buffer even with small GEMM_R 2026-08-20 22:30:45 +02:00
Martin Kroeker 57da6f5902 Change atomic semanrics to acquire/release to fix tsan warnings 2026-07-07 21:38:42 +02:00
hheei 71f2260186 lapack/laed3: guard sqrt(-w[i]) against spuriously positive w[i]
When eigenvalues are nearly degenerate, numerical accumulation in
the divide-and-conquer merge can push w[i] slightly above zero.
The subsequent sqrt(-w[i]) then produces NaN, which propagates
through the entire eigenvector output of DSYEVD/DSTEDC.

Use fmax(-w[i], 0.0) to safely clamp the sqrt argument, yielding
zero instead of NaN for spuriously positive w[i].  The fmax call
maps to a single vmaxsd instruction on x86_64 with zero overhead.

Add test/test_laed3_nan.c which exercises DSYEVD on a rank-1
perturbed identity matrix designed to create near-degenerate
eigenvalue clusters.
2026-07-02 23:03:38 +08:00
Martin Kroeker 1f2ae720af Make temp1 volatile to keep Clang on AppleM from optimizing out the division guards 2026-05-25 00:35:40 +02:00
NAKATA Maho f272216ae3 lapack/laed3: fix MinGW build for slaed3
common_interface.h declares slamc3 as returning FLOATRET when
NEED_F2CCONV is enabled, but laed3_single.c and laed3_parallel.c
redeclared LAMC3 as returning FLOAT. This causes conflicting-type
errors in MinGW builds.

Use FLOATRET for the local LAMC3 prototype so it matches the shared
declaration. Also undefine the Windows max macro before the local
max definition in laed3_parallel.c to avoid macro redefinition
warnings.
2026-04-06 13:13:21 +09:00
Martin Kroeker f590468b69 Copy generic Makefile for wasm laswp 2026-03-15 19:34:25 +01:00
Martin Kroeker 7d431f3bb0 fix conditional build for double and complex too 2026-02-18 19:10:53 +01:00
Martin Kroeker 6e3fb2ce52 fix conditional build rule 2026-02-18 11:40:20 +01:00
Martin Kroeker 04bb5acd79 change BLAS_HALF to BLAS_BFLOAT16 (another missed rename) 2025-07-08 14:40:22 +02:00
Chris Sidebottom 7a97c4ca97 Rename HALF -> BFLOAT16 in some more places 2025-07-07 10:13:39 +00:00
Usui, Tetsuzo 14107e37d9 Add parallel laed3 2025-07-01 22:12:27 +09:00
gkdddd 670ec6f757 Added shgemm_kernel_8x8 for RISCV64_ZVL128B and shgemm_kernel_16x8 for RISCV64_ZVL256B
Added HFLOAT16 support for RISCV64
Added shgemm_kernel_8x8 for RISCV64_ZVL128B and shgemm_kernel_16x8 for RISCV64_ZVL256B based on HFLOAT16
The instruction sets used are ZVFH and ZFH, which need to be supported by RVV1.0

Related to issue #5279
Co-authored-by Linjin Li <linjin_li@163.com>
2025-06-03 20:14:30 +08:00
Ruiyang Wu 02fd1df10b CMake: Pass OpenMP compiler and linker flags through CMake targets
Using `OpenMP::OpenMP_LANG` targets for CMake is less error-prone than
passing the compiler and linker flags manually. Furthermore, it allows
the user to customize those flags by setting `OpenMP_LANG_FLAGS`,
`OpenMP_LANG_LIB_NAMES`, and `OpenMP_omp_LIBRARY`.
2025-03-26 23:09:54 -04:00
Martin Kroeker 2332ea7e7a fix misleading indentation 2024-11-06 18:35:31 +01:00
Martin Kroeker 73e13b0273 flesh out HERK prototype 2024-08-12 14:45:40 +02:00
Martin Kroeker 824306baab flesh out HERK prototype 2024-08-12 14:44:13 +02:00
Mark Ryan 3b715e6162 Add autodetection for riscv64
Implement DYNAMIC_ARCH support for riscv64.  Three cpu types are
supported, riscv64_generic, riscv64_zvl256b, riscv64_zvl128b.
The two non-generic kernels require CPU support for RVV 1.0 to
function correctly.  Detecting that a riscv64 device supports
RVV 1.0 is a little complicated as there are some boards on the
market that advertise support for V via hwcap but only support
RVV 0.7.1, which is not binary compatible with RVV 1.0.  The
approach taken is to first try hwprobe.  If hwprobe is not
available, we fall back to hwcap + an additional check to distinguish
between RVV 1.0 and RVV 0.7.1.

Tested on a VM with VLEN=256, a CanMV K230 with VLEN=128 (with only
the big core enabled), a Lichee Pi with RVV 0.7.1 and a VF2 with no
vector.

A compiler with RVV 1.0 support must be used to build OpenBLAS for
riscv64 when DYNAMIC_ARCH=1.

Signed-off-by: Mark Ryan <markdryan@rivosinc.com>
2024-07-15 14:24:22 +00:00
Martin Kroeker 2dda40d280 use atomic operations as in the corresponding getrf 2024-03-28 11:33:31 +01:00
Dirreke ec89466e14 Add CSKY support 2024-01-16 23:45:06 +08:00
Martin Kroeker 1d4aa8d7d5 fix improper function prototypes (empty parentheses) 2023-09-30 13:00:51 +02:00
Martin Kroeker f4f31fb53b fix improper function prototypes (empty parentheses) 2023-09-30 12:59:44 +02:00
gxw d15e0a055c LoongArch64: Fixed compilation issues when enable DYNAMIC_ARCH 2023-09-27 10:05:27 +08:00
Martin Kroeker 3b6050ac04 clarify the comment on the out-of-bounds check from #723 2023-08-26 02:00:00 +02:00
Martin Kroeker 22a402bc2c clarify the comment on the out-of-bounds check from #723 2023-08-26 01:58:08 +02:00
Martin Kroeker 437c0bf2b4 Merge pull request #3843 from Mousius/switch-ratio
Propagate SWITCH_RATIO to DYNAMIC_ARCH builds
2023-04-19 11:51:54 +02:00
Chris Sidebottom 32f2fafde7 Propagate SWITCH_RATIO to DYNAMIC_ARCH builds
Previously dynamic builds were either using the default SWITCH_RATIO
or one from the higher level architecture; this patch ensures the
dynamic builds can use this parameter as well.
2023-04-17 15:34:12 +01:00
Martin Kroeker 6c431239da Split test condition in LU computation - non-denormal for computation, exact zero for reporting singularity 2023-03-29 22:14:21 +02:00
Martin Kroeker 12aabb9f9b fix conditional 2023-03-29 09:44:33 +02:00
Martin Kroeker f3d21039ce Improve fix from PR3924 (#3941)
* compare denominator against DBL_MIN rather than a somewhat arbitrary small number near it
2023-03-16 15:09:32 +01:00
Martin Kroeker 3d27cbd9a3 avoid overflow in division 2023-02-26 23:44:14 +01:00
Martin Kroeker a39ced0551 avoid overflow in division 2023-02-26 23:42:20 +01:00
Martin Kroeker aa2a2d9c01 Conditionally compile files that may get replaced by ReLAPACK 2022-11-08 12:04:46 +01:00
Martin Kroeker 7656aba00e Merge pull request #3493 from martin-frbg/casts+cleanup
WIP casts and cleanups
2022-02-06 23:55:06 +01:00
Martin Kroeker 40003f8edb Fix pivot offset calculation for negative incx 2022-01-17 00:11:18 +01:00
Martin Kroeker 57e2a72f40 Fix pivot offset calculation for negative incx 2022-01-17 00:10:21 +01:00
Martin Kroeker 3b6293f5a0 Fix offset calculation for negative incx 2022-01-17 00:09:14 +01:00
Martin Kroeker afa0cece5c Fix pivot offset calculation for negative incx 2022-01-17 00:08:20 +01:00
Martin Kroeker eca2f50b48 Fix pivot offset calculation for negative incx 2022-01-17 00:07:33 +01:00
Martin Kroeker 0e9e951306 Fix pivot offset calculation for negative incx 2022-01-17 00:06:41 +01:00
Martin Kroeker 1b49ef8dcf Fix pivot index for negative increments 2022-01-17 00:05:33 +01:00
Martin Kroeker 6b407a16cb fix function typecasts 2021-12-21 18:51:28 +01:00
Martin Kroeker aecb4a5e8d fix function typecasts 2021-12-21 18:50:22 +01:00
Martin Kroeker c49d46f25f fix function typecast 2021-12-21 18:49:18 +01:00
gxw af0a69f355 Add support for LOONGARCH64 2021-07-27 15:29:12 +08:00
Zhang Xianyi d7ba7679b6 Merge branch 'develop' into risc-v 2020-10-16 23:27:38 +08:00
Martin Kroeker 4bb73c0171 Rename "HALF" type to "BFLOAT16" 2020-10-13 20:07:19 +02:00
Martin Kroeker 32733ded04 Rename "HALF" and "sh" to "BFLOAT16" and "sb" 2020-10-11 23:52:45 +02:00
Martin Kroeker b27ca78a21 Adapt to having only a subset of variable types supported 2020-10-11 14:46:24 +02:00
Martin Kroeker 93454022a9 Adapt to having only a subset of variable types supported 2020-10-11 14:45:40 +02:00