Skip to the content.

HPL

HPL (High Performance Linpack) factors a large matrix and solves Ax=b — the TOP500-style dense LU stress test of BLAS end-to-end.

Configs + A/B: opensolvers/benchmarks/hpl. Backend story: BLAS. Video: NaN Linpack on RISC-V · EESSI blog.

Same xhpl throughout; OpenBLAS swapped via FlexiBLAS (no HPL rebuild). EESSI 2025.06-001, GCC 14.3, HPL 2.3.

Cross-board

Board Before (stock 0.3.30) After (fixed OpenBLAS)
VisionFive 2 (4× U74) 3.13 GFLOP/s 5.28 GFLOP/s (1.69×)
Orange Pi RV2 (8× X60) ~8.5 GFLOP/s, FAILED (nan) 10.53 GFLOP/s, PASSED
Banana Pi F3 (8× X60, 3.7 GB) 11.64 GFLOP/s, FAILED (nan) 11.52 GFLOP/s, PASSED

X60 stock RVV looked “fast” but residual was nan — broken gemv_n (easyconfigs#26444).

Orange Pi RV2

Config Result
Stock RVV N=8000 ~8.5 GFLOP/s, FAILED
Fixed RVV peak (N=20000, 2×4) 10.53 GFLOP/s, PASSED
Scalar vs patched RVV (N=8000) 6.41 → 11.55 (1.80×)
OpenBLAS 0.3.34 (N=8000 / N=20000) 11.04 / 10.97 vs patched 0.3.30

Prefer a 2×4 grid over 1×8 for peak. Large N is RAM-tight on 8 GB. Harness: run-hpl-ab.sh, run-hpl-034.sh.

GCC X60 mtune is a separate axis (GCC) — modest HPL +0.8% on 15.2.

HPL on BLIS

Dedicated xhpl + static RVV libblis.a (no FlexiBLAS on RV2). Correctness holds; square-DGEMM wins do not transfer:

Config BLIS vs OpenBLAS-RVV
N=8000, 1×8 4.02 GFLOP/s PASSED 0.35×
N=20000, 2×4 5.57 GFLOP/s PASSED 0.53×
N=25600 best (2×4) 5.87 PASSED —

HPL is panel-heavy (dtrsm / level-2), not the large square DGEMM where BLIS wins ~1.3× single-thread.

Other boards