Avatar for the OpenMathLib user
OpenMathLib
OpenBLAS
BlogDocsChangelog

disable fp16 flags on RISC-V unless BUILD_HFLOAT16=1

#5431
Comparing
markdryan:markdryan/riscv-hf16-fix
(
ce79fe1
) with
develop
(
06c09de
)
CodSpeed Performance Gauge
0%
Improvements
0
Regressions
0
Untouched
62
New
0
Dropped
0
Ignored
0

Benchmarks

Passed

test_gesv[100-d]
benchmark/pybench/benchmarks/bench_blas.py::test_gesv[100-d]
CodSpeed Performance Gauge
0%
395.7 µs
394.3 µs
test_gesdd[mn0-d]
benchmark/pybench/benchmarks/bench_blas.py::test_gesdd[mn0-d]
CodSpeed Performance Gauge
0%
119.9 µs
119.8 µs
test_daxpy[1000-z]
benchmark/pybench/benchmarks/bench_blas.py::test_daxpy[1000-z]
CodSpeed Performance Gauge
0%
40.4 µs
40.4 µs
test_dgbmv[1-1000-z]
benchmark/pybench/benchmarks/bench_blas.py::test_dgbmv[1-1000-z]
CodSpeed Performance Gauge
0%
118.8 µs
118.7 µs
test_daxpy[1000-s]
benchmark/pybench/benchmarks/bench_blas.py::test_daxpy[1000-s]
CodSpeed Performance Gauge
0%
27.3 µs
27.3 µs
test_gemm[100-d]
benchmark/pybench/benchmarks/bench_blas.py::test_gemm[100-d]
CodSpeed Performance Gauge
0%
471.2 µs
471.2 µs
test_dgemv[1000-s]
benchmark/pybench/benchmarks/bench_blas.py::test_dgemv[1000-s]
CodSpeed Performance Gauge
0%
7 ms
7 ms
test_syev[200-d]
benchmark/pybench/benchmarks/bench_blas.py::test_syev[200-d]
CodSpeed Performance Gauge
0%
58.6 ms
58.6 ms
test_gesdd[mn1-s]
benchmark/pybench/benchmarks/bench_blas.py::test_gesdd[mn1-s]
CodSpeed Performance Gauge
0%
65.2 ms
65.2 ms
test_nrm2[1000-d]
benchmark/pybench/benchmarks/bench_blas.py::test_nrm2[1000-d]
CodSpeed Performance Gauge
0%
30.4 µs
30.4 µs
test_dgbmv[1-1000-c]
benchmark/pybench/benchmarks/bench_blas.py::test_dgbmv[1-1000-c]
CodSpeed Performance Gauge
0%
99.4 µs
99.4 µs
test_gesv[1000-d]
benchmark/pybench/benchmarks/bench_blas.py::test_gesv[1000-d]
CodSpeed Performance Gauge
0%
93.3 ms
93.3 ms
test_gesv[100-c]
benchmark/pybench/benchmarks/bench_blas.py::test_gesv[100-c]
CodSpeed Performance Gauge
0%
695.3 µs
695.3 µs
test_syrk[100-d]
benchmark/pybench/benchmarks/bench_blas.py::test_syrk[100-d]
CodSpeed Performance Gauge
0%
339.4 µs
339.4 µs
test_gesdd[mn1-d]
benchmark/pybench/benchmarks/bench_blas.py::test_gesdd[mn1-d]
CodSpeed Performance Gauge
0%
93.8 ms
93.8 ms
test_gemm[100-s]
benchmark/pybench/benchmarks/bench_blas.py::test_gemm[100-s]
CodSpeed Performance Gauge
0%
273.1 µs
273.1 µs
test_syrk[1000-d]
benchmark/pybench/benchmarks/bench_blas.py::test_syrk[1000-d]
CodSpeed Performance Gauge
0%
130.4 ms
130.3 ms
test_gesdd[mn0-s]
benchmark/pybench/benchmarks/bench_blas.py::test_gesdd[mn0-s]
CodSpeed Performance Gauge
0%
109.1 µs
109.1 µs
test_syev[200-s]
benchmark/pybench/benchmarks/bench_blas.py::test_syev[200-s]
CodSpeed Performance Gauge
0%
49.1 ms
49.1 ms
test_gesv[1000-c]
benchmark/pybench/benchmarks/bench_blas.py::test_gesv[1000-c]
CodSpeed Performance Gauge
0%
188.6 ms
188.6 ms
test_syrk[1000-c]
benchmark/pybench/benchmarks/bench_blas.py::test_syrk[1000-c]
CodSpeed Performance Gauge
0%
227.5 ms
227.5 ms
test_gesv[1000-z]
benchmark/pybench/benchmarks/bench_blas.py::test_gesv[1000-z]
CodSpeed Performance Gauge
0%
353.6 ms
353.6 ms
test_syev[50-s]
benchmark/pybench/benchmarks/bench_blas.py::test_syev[50-s]
CodSpeed Performance Gauge
0%
1.3 ms
1.3 ms
test_gemm[1000-s]
benchmark/pybench/benchmarks/bench_blas.py::test_gemm[1000-s]
CodSpeed Performance Gauge
0%
117.4 ms
117.4 ms
test_gemm[1000-z]
benchmark/pybench/benchmarks/bench_blas.py::test_gemm[1000-z]
CodSpeed Performance Gauge
0%
875.6 ms
875.6 ms
test_gemm[1000-d]
benchmark/pybench/benchmarks/bench_blas.py::test_gemm[1000-d]
CodSpeed Performance Gauge
0%
239.4 ms
239.4 ms
test_syrk[1000-z]
benchmark/pybench/benchmarks/bench_blas.py::test_syrk[1000-z]
CodSpeed Performance Gauge
0%
476.4 ms
476.4 ms
test_dgemv[1000-z]
benchmark/pybench/benchmarks/bench_blas.py::test_dgemv[1000-z]
CodSpeed Performance Gauge
0%
26.3 ms
26.3 ms
test_gemm[1000-c]
benchmark/pybench/benchmarks/bench_blas.py::test_gemm[1000-c]
CodSpeed Performance Gauge
0%
426 ms
426 ms
test_dgemv[1000-c]
benchmark/pybench/benchmarks/bench_blas.py::test_dgemv[1000-c]
CodSpeed Performance Gauge
0%
14.8 ms
14.8 ms
test_gemm[100-z]
benchmark/pybench/benchmarks/bench_blas.py::test_gemm[100-z]
CodSpeed Performance Gauge
0%
1.2 ms
1.2 ms
test_syrk[1000-s]
benchmark/pybench/benchmarks/bench_blas.py::test_syrk[1000-s]
CodSpeed Performance Gauge
0%
65.4 ms
65.4 ms
test_gesv[1000-s]
benchmark/pybench/benchmarks/bench_blas.py::test_gesv[1000-s]
CodSpeed Performance Gauge
0%
52.6 ms
52.6 ms
test_dgemv[1000-d]
benchmark/pybench/benchmarks/bench_blas.py::test_dgemv[1000-d]
CodSpeed Performance Gauge
0%
13.9 ms
13.9 ms
test_syrk[100-z]
benchmark/pybench/benchmarks/bench_blas.py::test_syrk[100-z]
CodSpeed Performance Gauge
0%
856.4 µs
856.5 µs
test_gesv[100-s]
benchmark/pybench/benchmarks/bench_blas.py::test_gesv[100-s]
CodSpeed Performance Gauge
0%
256.6 µs
256.7 µs
test_gesv[100-z]
benchmark/pybench/benchmarks/bench_blas.py::test_gesv[100-z]
CodSpeed Performance Gauge
0%
938.3 µs
938.5 µs
test_dgemv[100-z]
benchmark/pybench/benchmarks/bench_blas.py::test_dgemv[100-z]
CodSpeed Performance Gauge
0%
230.9 µs
231 µs
test_syrk[100-c]
benchmark/pybench/benchmarks/bench_blas.py::test_syrk[100-c]
CodSpeed Performance Gauge
0%
472.2 µs
472.3 µs
test_gemm[100-c]
benchmark/pybench/benchmarks/bench_blas.py::test_gemm[100-c]
CodSpeed Performance Gauge
0%
659.4 µs
659.6 µs
test_syev[50-d]
benchmark/pybench/benchmarks/bench_blas.py::test_syev[50-d]
CodSpeed Performance Gauge
0%
1.4 ms
1.4 ms
test_dgbmv[1-1000-s]
benchmark/pybench/benchmarks/bench_blas.py::test_dgbmv[1-1000-s]
CodSpeed Performance Gauge
0%
74.8 µs
74.9 µs
test_dgemv[100-d]
benchmark/pybench/benchmarks/bench_blas.py::test_dgemv[100-d]
CodSpeed Performance Gauge
0%
140.9 µs
141 µs
test_syrk[100-s]
benchmark/pybench/benchmarks/bench_blas.py::test_syrk[100-s]
CodSpeed Performance Gauge
0%
213.1 µs
213.3 µs
test_dgemv[100-s]
benchmark/pybench/benchmarks/bench_blas.py::test_dgemv[100-s]
CodSpeed Performance Gauge
0%
103.7 µs
103.8 µs
test_daxpy[100-c]
benchmark/pybench/benchmarks/bench_blas.py::test_daxpy[100-c]
CodSpeed Performance Gauge
0%
25 µs
25 µs
test_nrm2[1000-dz]
benchmark/pybench/benchmarks/bench_blas.py::test_nrm2[1000-dz]
CodSpeed Performance Gauge
0%
35.3 µs
35.4 µs
test_dgemv[100-c]
benchmark/pybench/benchmarks/bench_blas.py::test_dgemv[100-c]
CodSpeed Performance Gauge
0%
149.5 µs
149.7 µs
test_dgbmv[1-1000-d]
benchmark/pybench/benchmarks/bench_blas.py::test_dgbmv[1-1000-d]
CodSpeed Performance Gauge
0%
83.4 µs
83.5 µs
test_dgbmv[1-100-c]
benchmark/pybench/benchmarks/bench_blas.py::test_dgbmv[1-100-c]
CodSpeed Performance Gauge
0%
40.1 µs
40.1 µs
test_daxpy[100-z]
benchmark/pybench/benchmarks/bench_blas.py::test_daxpy[100-z]
CodSpeed Performance Gauge
0%
25.6 µs
25.7 µs
test_dgbmv[1-100-s]
benchmark/pybench/benchmarks/bench_blas.py::test_dgbmv[1-100-s]
CodSpeed Performance Gauge
0%
37 µs
37.1 µs
test_dot[100]
benchmark/pybench/benchmarks/bench_blas.py::test_dot[100]
CodSpeed Performance Gauge
0%
22.2 µs
22.3 µs
test_dgbmv[1-100-z]
benchmark/pybench/benchmarks/bench_blas.py::test_dgbmv[1-100-z]
CodSpeed Performance Gauge
0%
41.9 µs
42.1 µs
test_daxpy[1000-d]
benchmark/pybench/benchmarks/bench_blas.py::test_daxpy[1000-d]
CodSpeed Performance Gauge
0%
32.2 µs
32.3 µs
test_dgbmv[1-100-d]
benchmark/pybench/benchmarks/bench_blas.py::test_dgbmv[1-100-d]
CodSpeed Performance Gauge
0%
37.7 µs
37.9 µs
test_daxpy[100-d]
benchmark/pybench/benchmarks/bench_blas.py::test_daxpy[100-d]
CodSpeed Performance Gauge
0%
24 µs
24.1 µs
test_nrm2[100-d]
benchmark/pybench/benchmarks/bench_blas.py::test_nrm2[100-d]
CodSpeed Performance Gauge
0%
36.7 µs
36.8 µs
test_daxpy[1000-c]
benchmark/pybench/benchmarks/bench_blas.py::test_daxpy[1000-c]
CodSpeed Performance Gauge
0%
32.4 µs
32.6 µs
test_nrm2[100-dz]
benchmark/pybench/benchmarks/bench_blas.py::test_nrm2[100-dz]
CodSpeed Performance Gauge
0%
28.8 µs
28.9 µs
test_dot[1000]
benchmark/pybench/benchmarks/bench_blas.py::test_dot[1000]
CodSpeed Performance Gauge
-1%
28.2 µs
28.3 µs
test_daxpy[100-s]
benchmark/pybench/benchmarks/bench_blas.py::test_daxpy[100-s]
CodSpeed Performance Gauge
-1%
23.8 µs
23.9 µs

Commits

Click on a commit to change the comparison range
Base
develop
06c09de
-0.08%
disable fp16 flags on RISC-V unless BUILD_HFLOAT16=1 The compiler options that enable 16 bit floating point instructions should not be enabled by default when building the RISCV64_ZVL128B and RISCV64_ZVL256B targets. The zfh and zvfh extensions are not part of the 'V' extension and are not required by any of the RVA profiles. There's no guarantee that kernels built with zfh and zvfh will work correctly on fully compliant RVA23U64 devices. To fix the issue we only build the RISCV64_ZVL128B and RISCV64_ZVL256B kernels with the half float flags if BUILD_HFLOAT16=1. We also update the RISC-V dynamic detection code to disable the RISCV64_ZVL128B and RISCV64_ZVL256B kernels at runtime if we've built with DYNAMIC_ARCH=1 and BUILD_HFLOAT16=1 and are running on a device that does not support both Zfh and Zvfh. Fixes: https://github.com/OpenMathLib/OpenBLAS/issues/5428
ce79fe1
7 days ago
by markdryan
© 2025 CodSpeed Technology
Home Terms Privacy Docs