Skip to content

Commit 3b0b4be

Browse files
authored
Merge pull request #29 from opensolvers/site-updates
Sync benchmarks: GROMACS, ScaLAPACK, FFTW/QE
2 parents e8230bf + 423458d commit 3b0b4be

9 files changed

Lines changed: 159 additions & 10 deletions

File tree

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Each RISC-V board exposes several compute paths. We benchmark and tune them inde
1717
| **Specific** | Silicon-specific custom units beyond RVV | X60 **IME** (`smt.vmadot`) int8 on [RV2](boards/RV2.html) / [F3](boards/F3.html); [ONNX Runtime](apps/onnx.html) int4 via MLAS |
1818
| **GPU** | Discrete or integrated accelerators | On the roadmap — not yet in our RISC-V board benchmarks |
1919

20-
Recent highlights on the Orange Pi RV2 (SpaceMiT X60, RVV): fixing an OpenBLAS `gemv_n` bug restores correctness across [BLAS](scientific-libs/blas.html), [LAPACK](scientific-libs/lapack.html), [ELPA](scientific-libs/elpa.html), [HPL](apps/hpl.html), and [Quantum ESPRESSO](apps/qe.html) — with patched RVV reaching **10.53 GFLOP/s** on Linpack, **1.58×** on a dense eigensolve, and **1.31×** on a 64-atom Si DFT SCF. [FFTW `r5v`](scientific-libs/fftw.html) beats scalar **1.06–1.60×** under `FFTW_MEASURE`; planner choice alone is worth **3–5×**. On the IME path, setting `accuracy_level=4` on ONNX `MatMulNBits` nodes unlocks **9–10×** int4 LLM decode — see [ONNX Runtime](apps/onnx.html) and [MLAS](scientific-libs/mlas.html).
20+
Recent highlights on the Orange Pi RV2 (SpaceMiT X60, RVV): fixing an OpenBLAS `gemv_n` bug restores correctness across [BLAS](scientific-libs/blas.html), [LAPACK](scientific-libs/lapack.html), [ELPA](scientific-libs/elpa.html), [ScaLAPACK](scientific-libs/scalapack.html), [HPL](apps/hpl.html), and [Quantum ESPRESSO](apps/qe.html). [FFTW `r5v`](scientific-libs/fftw.html) wins **1.06–1.60×** in isolation but **~0%** inside a real QE SCF (`FFTW_ESTIMATE`); [GROMACS](apps/gromacs.html) sees **1.23×** on isolated `PME 3D-FFT`. ONNX `accuracy_level=4` unlocks **9–10×** int4 decode — [ONNX Runtime](apps/onnx.html) / [MLAS](scientific-libs/mlas.html).
2121

2222
## Scientific libs
2323

@@ -29,7 +29,8 @@ Library-level probes — performance *and* numerical correctness:
2929
- **[LAPACK](scientific-libs/lapack.html)** — LAPACK path via NumPy `eigvalsh`
3030
- **[ELPA](scientific-libs/elpa.html)** — dense eigensolver (CP2K / VASP class workloads)
3131
- **[MLAS](scientific-libs/mlas.html)** — ONNX Runtime QNBit int4 GEMM; isolated IME kernel rates on X60
32-
- **[FFTW](scientific-libs/fftw.html)** — RVV `r5v` backend A/B vs scalar; planner-aware `tests/bench` on X60
32+
- **[FFTW](scientific-libs/fftw.html)** — RVV `r5v` backend A/B; QE FFT-axis shows ~0% end-to-end despite micro wins
33+
- **[ScaLAPACK](scientific-libs/scalapack.html)** — distributed `PDSYEV`; stock RVV hangs, patched **1.09×**
3334

3435
## Apps
3536

@@ -38,6 +39,7 @@ End-to-end application benchmarks on the same boards and EESSI toolchain:
3839
- **[HPL](apps/hpl.html)** — High Performance Linpack; cross-board summary and A/B configs from [opensolvers/benchmarks](https://github.com/opensolvers/benchmarks)
3940
- **[Quantum ESPRESSO](apps/qe.html)** — plane-wave DFT SCF (`pw.x`); whole-application BLAS backend A/B with per-routine timers
4041
- **[ONNX Runtime](apps/onnx.html)** — int4 `MatMulNBits` LLM decode; `accuracy_level=4` unlocks X60 IME (**9–10×**)
42+
- **[GROMACS](apps/gromacs.html)** — PME MD; FFT-axis A/B via `libfftw3f` `LD_PRELOAD` (**1.23×** on `PME 3D-FFT`)
4143

4244
## Boards
4345

_config.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ navigation_apps:
2121
url: /apps/qe.html
2222
- title: ONNX Runtime
2323
url: /apps/onnx.html
24+
- title: GROMACS
25+
url: /apps/gromacs.html
2426

2527
navigation_scientific_libs:
2628
- title: BLAS
@@ -37,3 +39,5 @@ navigation_scientific_libs:
3739
url: /scientific-libs/mlas.html
3840
- title: FFTW
3941
url: /scientific-libs/fftw.html
42+
- title: ScaLAPACK
43+
url: /scientific-libs/scalapack.html

apps/gromacs.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# GROMACS
2+
3+
[GROMACS](https://www.gromacs.org/) `mdrun` PME molecular dynamics — a **whole-application FFT backend A/B**. Swaps only the single-precision FFTW library (`libfftw3f.so.3`) under one unchanged binary via `LD_PRELOAD`; GROMACS comes from the EESSI module (`GROMACS/2026.2-foss-2025b`).
4+
5+
Benchmark source: [opensolvers/benchmarks/gromacs](https://github.com/opensolvers/benchmarks/tree/main/gromacs)`gen-water-box.sh` and `run-gmx-fft-ab.sh`.
6+
7+
This is the **FFT-axis** companion to [Quantum ESPRESSO](qe.html)'s BLAS-axis probe. FFT microbench numbers: [FFTW](../scientific-libs/fftw.html).
8+
9+
## Why GROMACS as an FFT probe
10+
11+
PME splits long-range electrostatics into a real-space **`Force`** term and a reciprocal-space **mesh** part whose cost is a pair of 3D FFTs per step. On this build GROMACS reports **`SIMD instructions: None`** — force kernels are scalar — so swapping `libfftw3f` moves only the `PME 3D-FFT` / `PME mesh` rows in GROMACS's cycle table; `Force`, neighbor search, and constraints are built-in controls.
12+
13+
## Correctness — RVV FFT reproduces scalar MD
14+
15+
Same `mdrun`, same `md.tpr`, `libfftw3f` swapped (17.2k-atom SPC water, 2000 steps):
16+
17+
| FFT backend | Avg potential energy | Δ vs scalar |
18+
| ----------- | -------------------: | ----------: |
19+
| Scalar (`libfftw3f`, ~944 KB) | **−236755 kJ/mol** ||
20+
| r5v / RVV (`libfftw3f`, ~14 MB, 282k RVV instr) | **−236592 kJ/mol** | **0.069%** |
21+
22+
Physically the same trajectory — expected single-precision rounding between codelet sets.
23+
24+
## Performance — SPC water PME (Orange Pi RV2)
25+
26+
Serial, 48×48×48 PME grid. BLAS pinned to scalar OpenBLAS via FlexiBLAS; only `LD_PRELOAD` swaps FFT:
27+
28+
| Activity | Scalar | r5v (RVV) | Speedup | Kind |
29+
| -------- | -----: | --------: | ------: | ---- |
30+
| **`PME 3D-FFT`** | 21.095 s | 17.152 s | **1.23×** | **FFT (swapped axis)** |
31+
| `PME mesh` (total) | 73.281 s | 69.792 s | 1.05× | FFT + spread/gather/solve |
32+
| `PME solve Elec` | 9.116 s | 9.139 s | 1.00× | scalar (control) |
33+
| **`Force`** | 821.35 s | 819.97 s | 1.00× | **scalar kernels (90% of run)** |
34+
| `Neighbor search` | 6.731 s | 6.714 s | 1.00× | scalar (control) |
35+
36+
The **`Force` row confirms the A/B** — 821.35 vs 819.97 s (0.17%, noise). RVV wins **~1.23×** on the isolated 3D-FFT step, but `Force` dominates the whole run.
37+
38+
## Where GROMACS sits on the dilution spectrum
39+
40+
| Probe | Axis | Isolated speedup | Whole-app effect |
41+
| ----- | ---- | ---------------: | ---------------- |
42+
| [DGEMM](../scientific-libs/dgemm.html) | BLAS | ~2.3× | (pure kernel) |
43+
| [QE](qe.html) (DFT SCF) | BLAS | ~1.5–2.0× on BLAS routines | ~1.2–1.3× (FFT half untouched) |
44+
| [QE + FFTW](../scientific-libs/fftw.html) | FFT | ~1.02× on `fftw` | **~0%** (`FFTW_ESTIMATE`) |
45+
| **GROMACS** (this page) | **FFT** | **~1.23× on `PME 3D-FFT`** | small (`Force` = 90%) |
46+
47+
GROMACS is the mirror of QE: QE speeds up BLAS and is diluted by FFT; GROMACS speeds up FFT and is diluted by scalar force kernels.
48+
49+
## Gotchas
50+
51+
- GROMACS mixed precision links **`libfftw3f.so.3`** (single precision), not the double-precision `libfftw3.so.3` from the QE/FFTW work.
52+
- Fixed `-nsteps` keeps FFT call count identical between backends (4002 here).
53+
- RVV `libfftw3f` build is slow to compile (~2 h on one X60); scalar ~15 min.
54+
55+
## Reproduce
56+
57+
```bash
58+
module load GROMACS/2026.2-foss-2025b
59+
./gen-water-box.sh
60+
bash run-gmx-fft-ab.sh v1
61+
```
62+
63+
**Toolchain:** GROMACS 2026.2 / foss-2025b (EESSI), FFTW 3.3.10 `libfftw3f`, Orange Pi RV2 (SpaceMiT X60).

apps/qe.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,18 @@ The stock vector backend aborts in `inverse_s` (overlap-matrix inversion / Lowdi
3737

3838
### Default band count (`nbnd=136`)
3939

40-
**67.6 s → 57.0 s = 1.19×** overall (`calbec` 1.90×, `rdiaghg` 1.53×). BLAS routines speed up ~1.5–2.0×; the FFT half of the run does not move with a FlexiBLAS swap — see [FFTW](../scientific-libs/fftw.html) for RVV FFT tuning on the same hardware (**1.06–1.60×** under `FFTW_MEASURE`, plus **3–5×** from planner choice).
40+
**67.6 s → 57.0 s = 1.19×** overall (`calbec` 1.90×, `rdiaghg` 1.53×). BLAS routines speed up ~1.5–2.0×; the FFT half does not move with a FlexiBLAS swap. Swapping the FFT library directly ([FFTW](../scientific-libs/fftw.html) `run-qe-fft-ab.sh`) also yields **~0% end-to-end** — QE uses `FFTW_ESTIMATE` on thousands of small transforms, not the `MEASURE` planner where r5v wins **1.06–1.60×** in isolation.
41+
42+
## FFT axis — RVV FFTW also ~0% end-to-end
43+
44+
Serial `pw.x` on [Orange Pi RV2](../boards/RV2.html), BLAS pinned to scalar OpenBLAS, FFT swapped via `LD_PRELOAD` ([`run-qe-fft-ab.sh`](https://github.com/opensolvers/benchmarks/blob/main/fftw/run-qe-fft-ab.sh)):
45+
46+
| Timer | Scalar FFTW | r5v FFTW | Speedup |
47+
| ----- | ----------: | -------: | ------: |
48+
| `fftw` (~45% of run) | 112.24 s | 110.09 s | 1.019× |
49+
| **`PWSCF` (total)** | **248.49 s** | **248.10 s** | **1.002×** |
50+
51+
Energy bit-identical. A microbenchmark FFT win does not automatically become an application win — see also [GROMACS](gromacs.html) for the FFT-axis mirror ( **1.23×** on isolated `PME 3D-FFT`, diluted by scalar `Force`).
4152

4253
## Where QE sits on the BLAS-dilution spectrum
4354

@@ -50,7 +61,7 @@ Same X60, patched RVV vs scalar:
5061
| [ELPA](../scientific-libs/elpa.html) (eigensolver) | ~1.58× | BLAS-3 + BLAS-2 tridiagonalization |
5162
| **QE** (full DFT SCF) | **~1.2–1.3×** | BLAS + ~40–50% FFT + MPI |
5263

53-
Each step down adds more non-BLAS / latency-bound work, diluting the BLAS-3 peak. QE is the most realistic whole-application figure — and the reason a raw `dgemm` A/B *overstates* what a real code sees.
64+
Each step down adds more non-BLAS / latency-bound work, diluting the BLAS-3 peak. And on the X60 today, **neither BLAS nor FFT drop-in swaps meaningfully move a real QE SCF** — BLAS wins are capped by the FFT half; FFT wins evaporate under `FFTW_ESTIMATE`.
5465

5566
## Reproducing
5667

boards/RV2.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,8 @@ Full walkthrough: [EESSI/docs#819](https://github.com/EESSI/docs/pull/819) — *
4848

4949
## FFTW RVV
5050

51-
See [FFTW](../scientific-libs/fftw.html) — FFTW 3.3.10 with the `r5v` RVV backend vs scalar on this board. Under `FFTW_MEASURE`, r5v wins **1.06–1.60×**; `FFTW_ESTIMATE` under-plans large transforms by **3–5×**.
51+
See [FFTW](../scientific-libs/fftw.html) — r5v wins **1.06–1.60×** in `tests/bench`, but **~0%** end-to-end in [Quantum ESPRESSO](../apps/qe.html) (`FFTW_ESTIMATE`). [GROMACS](../apps/gromacs.html) FFT swap: **1.23×** on isolated `PME 3D-FFT`.
52+
53+
## ScaLAPACK
54+
55+
See [ScaLAPACK](../scientific-libs/scalapack.html)`PDSYEV` on 2×4 grid: stock RVV **hangs**; patched RVV **107.23 s** vs scalar **116.87 s** (**1.09×**).

scientific-libs/elpa.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Benchmark source: [opensolvers/benchmarks/elpa](https://github.com/opensolvers/b
1616

1717
The stock vector backend is faster than scalar but **wrong** — the same OpenBLAS 0.3.30 `gemv_n` NaN bug that breaks [HPL](../apps/hpl.html) and [Quantum ESPRESSO](../apps/qe.html). With the patch, RVV is **1.58×** faster than scalar (54.92 / 34.81) and numerically correct.
1818

19-
Speedup is smaller than pure `dgemm` (~2.3×) because tridiagonalization is latency-bound BLAS-2 — by design.
19+
Speedup is smaller than pure `dgemm` (~2.3×) because tridiagonalization is latency-bound BLAS-2 — by design. For the pure-MPI end of the spectrum see [ScaLAPACK](scalapack.html) (`PDSYEV`, **1.09×** patched RVV, stock RVV **hangs**).
2020

2121
### Banana Pi BPI-F3 (cross-board confirmation)
2222

scientific-libs/fftw.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Benchmark source: [opensolvers/benchmarks/fftw](https://github.com/opensolvers/benchmarks/tree/main/fftw)`build-fftw-r5v.sh` and `bench-fftw-ab.sh`.
66

7-
Relevant to [Quantum ESPRESSO](../apps/qe.html): plane-wave DFT spends a large fraction on FFT (`vloc_psi`, `fftw` timers). A FlexiBLAS swap does not touch FFT — tuning FFTW separately is how that half of the run moves.
7+
Relevant to [Quantum ESPRESSO](../apps/qe.html) and [GROMACS](../apps/gromacs.html): real apps spend large fractions on FFT. A FlexiBLAS swap does not touch FFT — swap the library via `LD_PRELOAD` instead (see `run-qe-fft-ab.sh` in the benchmarks repo).
88

99
## Orange Pi RV2 (SpaceMiT X60, 1 thread)
1010

@@ -51,11 +51,37 @@ The biggest lever on this hardware is **planner choice** — worth **3–5×**,
5151

5252
A first pass with `estimate` and `-t 0.3` appeared to show a **2× RVV regression** at N=262144. With honest timing, r5v is faster under both planners (717 vs 664 MFLOPS under MEASURE). Pin the planner and use **≥1 s** timing before trusting any single FFT A/B point.
5353

54+
## End-to-end — Quantum ESPRESSO gets ~0% from RVV FFTW
55+
56+
The microbench shows real RVV codelets (**1.06–1.60×**). Does that survive into a real DFT run? [`run-qe-fft-ab.sh`](https://github.com/opensolvers/benchmarks/blob/main/fftw/run-qe-fft-ab.sh) swaps **only** the FFT library (`LD_PRELOAD`) on serial `pw.x`, with BLAS pinned to scalar OpenBLAS via FlexiBLAS.
57+
58+
**Correctness:** total energy bit-identical across backends (2-atom **−14.57861334 Ry**; 64-atom **−506.67991945 Ry**).
59+
60+
64-atom SCF, WALL seconds ([Orange Pi RV2](../boards/RV2.html)):
61+
62+
| Timer | Scalar FFTW | r5v (RVV) FFTW | r5v speedup |
63+
| ----- | ----------: | -------------: | ----------: |
64+
| `fftw` | 112.24 | 110.09 | **1.019×** |
65+
| `vloc_psi` | 105.29 | 103.08 | 1.021× |
66+
| **`PWSCF` (total)** | **248.49** | **248.10** | **1.002×** |
67+
68+
**~0.2% wall, ~1.9% inside `fftw`** — even though `fftw` is ~45% of runtime. Why the 1.6× micro-win evaporates:
69+
70+
- **QE plans with `FFTW_ESTIMATE`, not `MEASURE`.** The RVV advantage in section (2) is largely a planner effect; under `estimate` the two libs are near-parity — and `estimate` is what QE uses (it cannot afford `MEASURE` across thousands of transient transforms).
71+
- **3260 small mixed-radix transforms**, not the cache-resident power-of-two sizes where RVV shines.
72+
73+
On the X60, **neither the BLAS axis nor the FFT axis moves a real QE SCF** with today's drop-in vectorized libraries. Contrast [GROMACS](../apps/gromacs.html): swapping `libfftw3f` wins **1.23×** on the isolated `PME 3D-FFT` step (but `Force` = 90% of the run).
74+
75+
## EasyBuild module
76+
77+
`FFTW-3.3.10-GCC-14.3.0-r5v.eb` packages the r5v build as a reproducible EESSI module (`--enable-r5v`, pinned `-march=rv64imafdcv_zvl256b`). Experimental — tracked on [hmeiland/easybuild-easyconfigs#3](https://github.com/hmeiland/easybuild-easyconfigs/pull/3), not yet upstream-ready.
78+
5479
## Reproduce
5580

5681
```bash
5782
./build-fftw-r5v.sh # needs $HOME/fftw-r5v.tar.gz on the board
5883
./bench-fftw-ab.sh # writes fftw-proper.log
84+
./run-qe-fft-ab.sh # QE FFT-axis A/B (LD_PRELOAD)
5985
```
6086

6187
**Gotcha (Orange Pi RV2):** `module load GCCcore/14.3.0` does not repath `gcc` — EESSI's compat GCC 13.4.0 keeps winning. Prepend the real GCC 14 bindir explicitly (see `build-fftw-r5v.sh`). On [Banana Pi F3](../boards/F3.html) the plain `module load GCC/14.3.0` repaths correctly.

scientific-libs/scalapack.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# ScaLAPACK
2+
3+
[ScaLAPACK](https://www.netlib.org/scalapack/) `PDSYEV` — a distributed dense real-symmetric eigenproblem on a 2D block-cyclic process grid. A **pure-MPI** proxy for node-local BLAS performance and correctness.
4+
5+
Benchmark source: [opensolvers/benchmarks/scalapack](https://github.com/opensolvers/benchmarks/tree/main/scalapack)`scalapack_bench.c`.
6+
7+
Companion to [ELPA](elpa.html): same problem class, different library and parallelism model. ELPA runs one rank with threaded BLAS; ScaLAPACK runs many MPI ranks each with single-threaded BLAS.
8+
9+
## Orange Pi RV2 (SpaceMiT X60, 8 cores)
10+
11+
`na=3000`, `nb=64`, **2×4** grid, 8 ranks × 1 thread. Backends swapped via FlexiBLAS — no rebuild.
12+
13+
| Backend | Time | Result |
14+
| ------- | ---: | ------ |
15+
| Stock CVMFS 0.3.30, default RVV (`ZVL256B`) || **HANG** (killed at 200 s) |
16+
| Scalar (`RISCV64_GENERIC`) | 116.87 s | finite=1 |
17+
| Patched RVV (`gemv_n` fix) | **107.23 s** | finite=1 (identical eigenvalues) |
18+
19+
The unpatched vector `gemv_n` NaN does not just corrupt the result — it **hangs** the solver, because `pdsyev`'s serial tridiagonal QR iteration never converges on NaN. The patched build is correct and **1.09×** faster than scalar.
20+
21+
## Why the speedup is modest
22+
23+
Versus ~2.4× for raw `dgemm` and ~1.58× for threaded [ELPA](elpa.html) on the same machine: at 8 ranks the node-local BLAS blocks are small, MPI communication plus the serial tridiagonal solve dominate wall time. The RVV-accelerable BLAS-3 fraction is small — the conservative, communication-bound end of the BLAS-backend spectrum.
24+
25+
## Reproduce
26+
27+
```bash
28+
module load ScaLAPACK/2.2.2-gompi-2025b-fb
29+
make
30+
31+
OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 OPENBLAS_CORETYPE=RISCV64_GENERIC \
32+
mpirun --bind-to core -np 8 ./scalapack_bench 3000 64 2
33+
34+
OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 FLEXIBLAS=/path/to/patched/libopenblas.so \
35+
mpirun --bind-to core -np 8 ./scalapack_bench 3000 64 2
36+
```
37+
38+
**Toolchain:** ScaLAPACK 2.2.2 / gompi-2025b-fb (EESSI), OpenBLAS 0.3.30 with `gemv_n` fix.

website.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ Context file for structural and content decisions on [opensolvers.com](https://w
1919

2020
1. **Home**
2121
2. **Boards** — VisionFive 2, OrangePi RV2, BananaPi F3
22-
3. **Apps** — HPL, Quantum ESPRESSO, ONNX Runtime
23-
4. **Scientific libs** — BLAS, DGEMM, NumPy, LAPACK, ELPA, MLAS, FFTW
22+
3. **Apps** — HPL, Quantum ESPRESSO, ONNX Runtime, GROMACS
23+
4. **Scientific libs** — BLAS, DGEMM, NumPy, LAPACK, ELPA, MLAS, FFTW, ScaLAPACK
2424

2525
Nav config: `_config.yml` (`navigation`, `navigation_boards`, `navigation_apps`, `navigation_scientific_libs`). Rendered in `_includes/header.html`. Cayman theme requires `_layouts/default.html` override to include the header.
2626

2727
## Content sources
2828

2929
| Source | Used for |
3030
|--------|----------|
31-
| [opensolvers/benchmarks](https://github.com/opensolvers/benchmarks) | BLAS (`dgemm/`), HPL (`hpl/`), ELPA (`elpa/`), QE (`qe/`), NumPy/LAPACK (`numpy/`), ONNX/MLAS (`onnx/`), FFTW RVV (`fftw/`) |
31+
| [opensolvers/benchmarks](https://github.com/opensolvers/benchmarks) | BLAS (`dgemm/`), HPL (`hpl/`), ELPA/ScaLAPACK (`elpa/`, `scalapack/`), QE/FFTW (`qe/`, `fftw/`), GROMACS (`gromacs/`), ONNX/MLAS (`onnx/`), NumPy (`numpy/`) |
3232
| [EESSI/docs#818](https://github.com/EESSI/docs/pull/818) | VisionFive 2 / U74 OpenBLAS + HPL |
3333
| [EESSI/docs#819](https://github.com/EESSI/docs/pull/819) | Orange Pi RV2 / X60 RVV `gemv_n` fix + HPL |
3434
| [easyconfigs#26436](https://github.com/easybuilders/easybuild-easyconfigs/pull/26436) | U74 OpenBLAS package |
@@ -44,6 +44,7 @@ Nav config: `_config.yml` (`navigation`, `navigation_boards`, `navigation_apps`,
4444

4545
| Date | Decision |
4646
|------|----------|
47+
| 2026-07-18 | Sync from benchmarks: GROMACS app, ScaLAPACK lib, FFTW QE end-to-end (~0%), updated QE/elpa/RV2 |
4748
| 2026-07-17 | Add FFTW `r5v` RVV page from `benchmarks/fftw`; cross-links from QE and RV2 |
4849
| 2026-07-17 | Add MLAS (lib) and ONNX Runtime (app) pages from `benchmarks/onnx` |
4950
| 2026-07-15 | Vector box: add ZVL256B and ZVL128B subtitles |

0 commit comments

Comments
 (0)