From 2a7144c8eec7dde4618d934914b5e7b0e21173b5 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Fri, 9 Oct 2026 09:31:58 +0200 Subject: [PATCH] docs: refresh the performance claims on the home page and the performance summary (current OpenBLAS ratios, riscv64 and z17) Co-Authored-By: Claude Opus 5.5 --- docs/index.md | 12 +++++++++--- docs/performance.md | 6 ++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index 709f581..a80745c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -101,15 +101,21 @@ is wrong on subnormals (3.7–5.9× from 512²). - **At parity:** `SumAxis(0)`, `Inner` against 16-thread OpenBLAS, `Log` on one core. -- **Slower:** `MatMul` against 16-thread OpenBLAS (0.55× at 1024², 0.3× at - 256² and below); `Dot`/mat·vec against NumPy's threaded BLAS (0.16×); `Exp` +- **Slower:** `MatMul` against 16-thread OpenBLAS at 512² and up (0.42× at + 512², 0.51× at 1024², measured in one run; at 256² ours is 1.44× faster); + `Dot` and mat·vec against NumPy's 16-thread BLAS (0.69× and 0.52× since + v0.6.0's helper pool; 0.16× before); `Exp` below 256 Ki elements (0.82×); the *allocating* forms of elementwise ops up to 256 Ki elements, `Concatenate`/`Stack` and slice copies outside a `Workspace` (0.2–0.5×). On Apple silicon the GEMM reached parity with tuned BLAS at 1024² (OpenBLAS in an arm64 VM, single-threaded vecLib on an M4 Max) and beats the pure-Go -**gonum 4–10×**. +**gonum 4–10×**. On the other targets, against go-ndarray's own scalar code on +one core: on a RISC-V SpacemiT X60 the RVV kernels cut `Sum` by up to 5.8× and +`MatMul` time by 31–45%; on an IBM z17 the s390x kernels cut `MatMul` 1024² +from 340 to 70 ms and `Max` by 92–96% (see [Performance](performance.md), +*SIMD coverage*). CI runs the suite on amd64, arm64 and 386 natively and on riscv64/loong64/ppc64le/s390x/arm under qemu, on Linux, macOS and Windows, diff --git a/docs/performance.md b/docs/performance.md index f9dd500..c8bd1c7 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -36,6 +36,12 @@ here is measured, every win is real, and where NumPy still leads it says so. > micro-kernel from 7.0 to 27.5 GFLOP/s and the serial GEMM from 5.3 to 20.0 > GFLOP/s at 512², against the scalar code; no NumPy or BLAS reference was > available on that host (see *loong64: LASX kernels*). +> On a RISC-V SpacemiT X60 (VLEN 256) the RVV kernels added in v0.7.0 make +> `Sum` up to 5.8× faster and, with v0.7.1's 6×8 micro-kernel, cut `MatMul` +> time by 31–45%, one core against the scalar code. On an IBM z17 (a z/VM guest +> on real hardware) the s390x kernels cut `MatMul` 1024² from 340 to 70 ms +> (v0.9.0) and `Max` by 92–96% (v0.9.1), likewise. Neither host had a NumPy or +> BLAS reference (see *SIMD coverage*). > SIMD kernels exist on **amd64, arm64, ppc64le, loong64, riscv64 and s390x** (LASX, > RVV and the s390x vector facility used only when the CPU reports them); the > 32-bit targets run the pure-Go reference code; the s390x kernels are measured