From dafcc15464159369658b9e2997a9bd69c47f23f3 Mon Sep 17 00:00:00 2001 From: Hugo Meiland Date: Sun, 12 Jul 2026 07:31:49 +0200 Subject: [PATCH] Update Orange Pi RV2 and HPL pages with X60 EESSI results. Document stock EESSI HPL failure (RVV gemv_n NaN) and fixed run reaching 10.53 GFLOP/s via easyconfigs#26444 and EESSI/docs#819. Co-authored-by: Cursor --- boards/RV2.md | 26 ++++++++++++++++++++++---- boards/hpl.md | 14 +++++++++----- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/boards/RV2.md b/boards/RV2.md index 11ffffe..7e8d0f8 100644 --- a/boards/RV2.md +++ b/boards/RV2.md @@ -1,11 +1,29 @@ -The OrangePi RV2 uses the Ky X1 SoC with 8× SpacemiT X60 cores. +The Orange Pi RV2 is built on the SpaceMiT **K1** SoC: eight **SpacemiT X60** cores at ~1.6 GHz (`rv64gcv`, **RVV 1.0, VLEN=256**), 8 GB RAM. ![](rv2.png) -## HPL +## HPL via EESSI + +See also the [cross-board HPL overview](hpl.html). + +Unlike the scalar VisionFive 2, the X60 already dispatches OpenBLAS's upstream **RVV** `RISCV64_ZVL256B` kernels from the stock EESSI stack — but OpenBLAS **0.3.30** has a bug in `gemv_n` that zeroes an uninitialized vector register, so stock EESSI **HPL fails with residual `nan`** (it can still report a plausible ~8.5 GFLOP/s; only the residual check reveals the answer is wrong). + +End-to-end on real Orange Pi RV2 hardware using [EESSI](https://www.eessi.io/) `2025.06-001` on [`dev.eessi.io/riscv`](https://www.eessi.io/docs/repositories/dev.eessi.io-riscv/). Peak run: **N=20000**, **NB=256**, **2×4** grid (8 MPI ranks). | | Before | After | | --- | ------ | ----- | -| HPL | DNF | **7.38 GFLOP/s** | +| HPL (8 cores, N=20000, 2×4) | ~8.5 GFLOP/s, **FAILED** (`nan`) | **10.53 GFLOP/s**, **PASSED** | +| Residual (N=8000, 1×8) | `nan` | 4.04e-03 | + +**Before** — stock EESSI OpenBLAS 0.3.30 (RVV `gemv_n` bug). **After** — fixed OpenBLAS built with `TARGET=RISCV64_ZVL256B` and a backported `gemv_n` patch ([easyconfigs#26444](https://github.com/easybuilders/easybuild-easyconfigs/pull/26444)), swapped in via FlexiBLAS — no HPL rebuild. + +The fix backports the upstream `gemv_n` correction from OpenBLAS ≥ 0.3.31 ([OpenBLAS#5408](https://github.com/OpenMathLib/OpenBLAS/pull/5408)). A future EESSI bump to OpenBLAS ≥ 0.3.34 should make the patch unnecessary. + +### Reproducing the fixed run + +1. Set up CVMFS + EESSI on `riscv64` (`EESSI_VERSION_OVERRIDE=2025.06-001`). +2. Baseline: `module load HPL/2.3-foss-2025b` → stock HPL fails residual check (`nan`). +3. Build fixed OpenBLAS: `eb --from-pr 26444 --robot` (via `EESSI-extend` user install, `EASYBUILD_OPTARCH='-march=rv64imafdcv_zvl256b'`). +4. Register the new backend with FlexiBLAS and re-run the same `xhpl`. -See the [cross-board HPL overview](hpl.html) for full comparison. **Before** (EESSI) DNF due to an RVV bug in OpenBLAS 0.3.30. +Full walkthrough: [EESSI/docs#819](https://github.com/EESSI/docs/pull/819) — *Chasing a NaN: correct RVV HPL on a RISC-V SpaceMiT X60 via EESSI*. diff --git a/boards/hpl.md b/boards/hpl.md index 5638e89..b2d85c2 100644 --- a/boards/hpl.md +++ b/boards/hpl.md @@ -1,15 +1,19 @@ # HPL results overview -Cross-board summary of **High Performance Linpack (HPL)** runs on consumer RISC-V hardware, comparing `-march` targets and EESSI stack builds. +Cross-board summary of **High Performance Linpack (HPL)** runs on consumer RISC-V hardware through the EESSI stack. **Toolchain:** GCC 14.3.0, OpenBLAS 0.3.30, HPL 2.3.0. EESSI runs use `2025.06-001` on [`dev.eessi.io/riscv`](https://www.eessi.io/docs/repositories/dev.eessi.io-riscv/). | Board | Cores | Before | After | | ----- | ----- | ------ | ----- | | [StarFive VisionFive 2](VisionFive2.html) | 4× SiFive U74 | 3.13 GFLOP/s | **5.28 GFLOP/s** | -| [OrangePi RV2](RV2.html) | 8× SpacemiT X60 | DNF | 7.38 GFLOP/s | -| [BananaPi F3](F3.html) | 8× SpacemiT X60 | DNF | — | +| [Orange Pi RV2](RV2.html) | 8× SpacemiT X60 | FAILED (`nan`) | **10.53 GFLOP/s** | +| [Banana Pi F3](F3.html) | 8× SpacemiT X60 | FAILED (`nan`) | — | -**DNF** — did not finish on the EESSI RISC-V stack, due to an RVV bug in OpenBLAS 0.3.30. +**Before** — stock EESSI OpenBLAS 0.3.30 on each board. -The VisionFive 2 **After** result uses a SiFive U74 OpenBLAS micro-kernel built via EasyBuild, swapped in at runtime with FlexiBLAS — **1.69×** faster than the stock EESSI **Before** build on the same hardware. See the [VisionFive 2 page](VisionFive2.html) and [EESSI/docs#818](https://github.com/EESSI/docs/pull/818) for the full walkthrough. +**After** — board-specific fixed OpenBLAS via EasyBuild, swapped in at runtime with FlexiBLAS (no HPL rebuild). + +On **VisionFive 2** (scalar U74), stock OpenBLAS uses a generic kernel; the fix adds a tuned U74 micro-kernel ([easyconfigs#26436](https://github.com/easybuilders/easybuild-easyconfigs/pull/26436), [EESSI/docs#818](https://github.com/EESSI/docs/pull/818)). + +On **X60 boards** (RVV 1.0, VLEN=256), stock OpenBLAS already dispatches RVV kernels but **0.3.30's `gemv_n` produces NaN**, so HPL fails its residual check despite reporting plausible GFLOP/s. The fix backports the upstream `gemv_n` correction ([easyconfigs#26444](https://github.com/easybuilders/easybuild-easyconfigs/pull/26444), [OpenBLAS#5408](https://github.com/OpenMathLib/OpenBLAS/pull/5408), [EESSI/docs#819](https://github.com/EESSI/docs/pull/819)). Banana Pi F3 uses the same K1/X60 SoC — the same fix applies; peak result not yet recorded.