Skip to content

Latest commit

 

History

History
61 lines (41 loc) · 5.03 KB

File metadata and controls

61 lines (41 loc) · 5.03 KB
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.

Videos

Walkthroughs on our YouTube channel — see the full list on the Videos page.

What we're working on

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.

What we optimise on the board

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.

Scalar, Vector, Custom, and GPU compute paths on the board

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.

Scientific libs

Library-level probes — performance and numerical correctness:

  • BLAS — OpenBLAS improvements (U74 kernel, X60 gemv_n / TRSM fixes) and OpenBLAS/ verification (bench_dgemm, difftest, verify_ctrsm)
  • NumPybench_blas.py DGEMM and eigvalsh through 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 r5v backend A/B; QE FFT-axis shows ~0% end-to-end despite micro wins
  • ScaLAPACK — distributed PDSYEV; stock RVV hangs, patched 1.09×

Apps

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 MatMulNBits LLM decode; accuracy_level=4 unlocks X60 IME (9–10×)
  • GROMACS — PME MD; FFT-axis A/B via libfftw3f LD_PRELOAD (1.23× on PME 3D-FFT)

Boards

  • 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.