| title | OpenSolvers — RISC-V scientific software benchmarks |
|---|---|
| description | Benchmark notes for open-source scientific libraries and applications on consumer RISC-V boards — HPL, BLAS, Quantum ESPRESSO, GROMACS, EESSI, and FlexiBLAS backend swaps. |
| permalink | / |
OpenSolvers explores how open-source scientific software runs on real hardware — starting with RISC-V boards and the tools that make that practical (EESSI, OpenBLAS, and friends). This site documents what we learn along the way.
Walkthroughs on our YouTube channel — see the full list on the Videos page.
- 1.69× HPL on VisionFive 2 — U74-tuned OpenBLAS via EESSI and FlexiBLAS (3.13 → 5.28 GFLOP/s)
We benchmark scientific libraries and applications on consumer RISC-V boards through the EESSI stack — from BLAS kernels up to full app runs — swapping fixed OpenBLAS builds via FlexiBLAS without rebuilding downstream code.
Each RISC-V board exposes several compute paths. We benchmark and tune them independently — often swapping backends at runtime via FlexiBLAS rather than rebuilding every app.
| Path | What it is | Examples on our boards |
|---|---|---|
| Scalar | Scalar ISA and portable C kernels — the correctness baseline | rv64gc on VisionFive 2; OPENBLAS_CORETYPE=RISCV64_GENERIC; U74 4×4 DGEMM tuning |
| Vector | ISA vector extensions (RVV) in shared libs | OpenBLAS RISCV64_ZVL256B (rv64gcv + Zvl256b) on X60; FFTW r5v 1.06–1.60× vs scalar; the gemv_n bug we fixed |
| Custom | Custom ISA extensions beyond standard RVV | X60 IME / XsmtVdot (smt.vmadot) int8 on RV2 / F3; ONNX Runtime int4 via MLAS |
| GPU | Integrated Imagination GPUs (OpenCL / Vulkan) | IMG BXE-4-32 MC1 on VisionFive 2 (JH7110); IMG BXE-2-32 on RV2 / F3 (K1) — present on silicon, GPGPU benchmarks not yet |
Recent highlights on the Orange Pi RV2 (SpaceMiT X60, RVV): fixing an OpenBLAS gemv_n bug restores correctness across BLAS, LAPACK, ELPA, ScaLAPACK, HPL, and Quantum ESPRESSO. FFTW r5v wins 1.06–1.60× in isolation but ~0% inside a real QE SCF (FFTW_ESTIMATE); GROMACS sees 1.23× on isolated PME 3D-FFT. ONNX accuracy_level=4 unlocks 9–10× int4 decode — ONNX Runtime / MLAS.
Library-level probes — performance and numerical correctness:
- BLAS — OpenBLAS improvements (U74 kernel, X60
gemv_n/ TRSM fixes) andOpenBLAS/verification (bench_dgemm,difftest,verify_ctrsm) - NumPy —
bench_blas.pyDGEMM andeigvalshthrough the SciPy stack - LAPACK — LAPACK path via NumPy
eigvalsh - ELPA — dense eigensolver (CP2K / VASP class workloads)
- MLAS — ONNX Runtime QNBit int4 GEMM; isolated IME kernel rates on X60
- FFTW — RVV
r5vbackend A/B; QE FFT-axis shows ~0% end-to-end despite micro wins - ScaLAPACK — distributed
PDSYEV; stock RVV hangs, patched 1.09×
End-to-end application benchmarks on the same boards and EESSI toolchain:
- HPL — High Performance Linpack; cross-board summary and A/B configs from opensolvers/benchmarks
- Quantum ESPRESSO — plane-wave DFT SCF (
pw.x); whole-application BLAS backend A/B with per-routine timers - ONNX Runtime — int4
MatMulNBitsLLM decode;accuracy_level=4unlocks X60 IME (9–10×) - GROMACS — PME MD; FFT-axis A/B via
libfftw3fLD_PRELOAD(1.23× onPME 3D-FFT)
- StarFive VisionFive 2 — JH7110 SoC, 4× SiFive U74 (
rv64gc). U74 OpenBLAS tuning: HPL 3.13 → 5.28 GFLOP/s. - Orange Pi RV2 — SpaceMiT K1, 8× X60 (RVV). Fixed OpenBLAS: HPL FAILED (
nan) → 10.53 GFLOP/s; ELPA 34.81 s (vs 54.92 s scalar). - Banana Pi F3 — same K1 / X60 SoC, 3.7 GB RAM. HPL FAILED (
nan) → 11.52 GFLOP/s; NumPy DGEMM up to 17.51 GFLOP/s on patched RVV.
Use the menu above to jump to a board, app, or scientific lib page.