Benchmarks: Re-measure the Grace comparison at Eigen master 210e0a609
Brings the two Grace pages up to date with Eigen master 210e0a609: every library and Eigen measured again on the same core, with OpenBLAS 0.3.34 built for the Neoverse V2 target in place of Ubuntu's 0.3.26. Eigen's TRSM is up to 26 % faster than in September; its smallest GEMMs are slower. The pages keep their URLs; titles and index entries now say October 2026.
What moved (Eigen, October ÷ September, NEON build)
| TRSM | 1.10–1.26 from n = 16 to 384, 1.03–1.12 above (both scalars; even the slowest new pass beats the fastest September pass by 8–24 % there; the SVE build gains up to 18 %). Master solves whole TRSM diagonal blocks with the shared packet kernel since eigen!3187 (merged) |
| GEEV | 1.02–1.06 in double, 1.01–1.07 in float from n = 192 on |
| square GEMM, n = 2 to 6 | 0.78–0.89 in double at n = 3, 4, 6 and in float at n = 2, 6 (double n = 3: 3.5 → 2.7 GFLOP/s; float n = 2: 1.33 → 1.05), 0.64–0.86 under SVE; every new pass falls outside September's full range. Not bisected |
| everything else | within 2 % in geometric mean per operation |
Arm Performance Libraries 26.07 and NVPL 26.5 are unchanged and repeat their September rates within 0.1 % in geometric mean, so the shifts above are Eigen's. OpenBLAS 0.3.34 is 16 % faster than 0.3.26 across the cells (GEMV 1.5x, POTRF 1.3–1.4x, GEMM 1.12–1.15x), which changes every OpenBLAS ratio and claim: it now leads Eigen in GEMV from n = 500, in double POTRF from n = 24 to 1024, in double GETRF/GEQRF/GESDD from n = 192, and by 6 % in double GEMM.
GEMM at n = 1024, GFLOP/s, double / float:
| Eigen NEON | Eigen SVE | Arm Performance Libraries | NVPL | OpenBLAS |
|---|---|---|---|---|
| 35 / 84 | 34 / 77 | 45 / 94 | 45 / 95 | 39 / 84 |
Method and provenance
- Tree measured: master
210e0a609with the !2903 harness commit and the Grace profile on top,916370756on the fork branchbenchmark-comparison-harness-grace-2026-10. The only harness change from the September tree is the Grace profile pointing the OpenBLAS arm at the new build; every other harness file is byte-identical. - Same host, OS, kernel, GCC 13.3, flags, 882 cells, three NEON passes (one per library binary) and two Eigen-only SVE passes; 60 runs over 10.5 h, none repeated, no errored cell. Four NVPL-binary runs overlapped other activity on the machine (1-min load up to 1.80); their NVPL rows repeat September within 0.6 % and their Eigen cells agree with the other two passes within 1 %, as the NEON page says.
- Every number in the prose is re-derived from the new files with
plot_comparison.py's own aggregation, and both pages' full tables reproduce exactly from the result files beside the charts. Three September figures that did not match their own data are corrected on the way: the DOT rates quoted for n = 1024, the claim that Eigen's double AXPY led OpenBLAS in L1 (it ran at 0.75–0.83 of it), and the GEEV library rates "at n = 1024" (35 was the n = 1000 rate). - The 60 result files replace September's (which stay in history); the command line each records carries the campaign directory as a relative path.