| 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.
- NaN Linpack on RISC-V (Orange Pi RV2) — stock RVV OpenBLAS fails HPL with residual
nan; gemv_n fix via EESSI + FlexiBLAS (10.53 GFLOP/s PASSED) - 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) — silicon is compute-capable, but vendor DDK is BXM-only (GPGPU closed; open Mesa pvr deferred) |
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. BLIS RVV assembly beats patched OpenBLAS ~1.29× on single-thread DGEMM (N=4096), but HPL linked to BLIS is correct yet only 0.35–0.53× OpenBLAS-RVV. FFTW r5v wins 1.06–1.60× in isolation but ~0% inside a real QE SCF; GROMACS sees 1.23× on isolated PME 3D-FFT and 3.31× whole-app with a hand-written RVV Force backend. ONNX accuracy_level=4 unlocks 9–10× int4 decode — ONNX Runtime / MLAS. llama.cpp: 10/10 Q4_0 models validated; IME wins prefill (up to ~2.5×), RVV wins token-gen; IME1 scale-build +4.3% pp512.
Library-level probes — performance and numerical correctness:
- BLAS — OpenBLAS improvements (U74 kernel, X60
gemv_n/ TRSM fixes) andOpenBLAS/verification (bench_dgemm,difftest,verify_ctrsm) - BLIS — FLAME BLIS
rv64ivRVV vs patched OpenBLAS; 1.29× DGEMM at N=4096 (1 thread); HPL end-to-end 0.35–0.53× OpenBLAS-RVV - 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; OpenBLAS A/B + BLIS-linked validation 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×) - llama.cpp — Q4_0 GGUF on X60; IME wins prefill (≥1.1B, up to ~2.5×); RVV wins token-gen
- GROMACS — PME MD; FFT-axis 1.23× on
PME 3D-FFT; RVVForcebackend 3.31× whole-app
- 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; BLIS DGEMM 1.29× / HPL 0.35–0.53×; llama.cpp IME vs RVV (10 models); IME1 scale-build +4.3%; GROMACS Force 3.31×; ELPA 34.81 s (vs 54.92 s scalar); BXE-2-32 GPGPU closed (vendor BXM-only DDK). - 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; same GPU closure as RV2.
Use the menu above to jump to a board, app, or scientific lib page.