diff --git a/hugo.toml b/hugo.toml
index c6479be..27c6675 100644
--- a/hugo.toml
+++ b/hugo.toml
@@ -12,7 +12,7 @@ disableKinds = ['taxonomy', 'term', 'rss', 'sitemap', '404']
unsafe = true
[params]
- description = "go-ndarray is a pure-Go (CGO=0) NumPy-style n-dimensional array library for float64 — slicing/views, broadcasting, ufuncs, reductions and linear algebra, multicore + SIMD on amd64 and arm64, with a Workspace arena for loops."
+ description = "go-ndarray is a pure-Go (CGO=0) NumPy-style n-dimensional array library for float64 — slicing/views, broadcasting, ufuncs, reductions and linear algebra, multicore + SIMD on amd64, arm64 and ppc64le, with a Workspace arena for loops."
# The colours are read by partials/styles.html. Emerald, shared with go-fft:
# the two are one scientific-computing family, told apart by their glyphs.
@@ -72,9 +72,9 @@ disableKinds = ['taxonomy', 'term', 'rss', 'sitemap', '404']
# its card, "kind" as the card's tag, "href" as both links, "blurb" in full.
[[params.repos]]
name = "ndarray"
- kind = "library · v0.2.2"
+ kind = "library · v0.2.3"
href = "https://github.com/go-ndarray/ndarray"
- blurb = "The library. Creation (Zeros/Arange/Linspace/…), strided views, broadcasting elementwise + ufuncs, reductions (Sum/Max/ArgMax/CumSum/Clip/Where), manipulation (Reshape/Concatenate/Stack), linalg (MatMul/Dot) via a panel-packed cache-blocked GEMM with a go-asmgen SIMD-FMA micro-kernel (NEON 4×8 on arm64, AVX2/FMA 6×8 on amd64), and a Workspace arena for loops (Use/Reset/Detach)."
+ blurb = "The library. Creation (Zeros/Arange/Linspace/…), strided views, broadcasting elementwise + ufuncs, reductions (Sum/Max/ArgMax/CumSum/Clip/Where), manipulation (Reshape/Concatenate/Stack), linalg (MatMul/Dot) via a panel-packed cache-blocked GEMM with a go-asmgen SIMD-FMA micro-kernel (NEON 4×8 on arm64, AVX2/FMA 6×8 on amd64, VSX 8×8 on ppc64le), and a Workspace arena for loops (Use/Reset/Detach)."
[[params.repos]]
name = "docs"
kind = "site"
diff --git a/layouts/index.html b/layouts/index.html
index acc3798..aa3825a 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -60,13 +60,13 @@
NumPy is the lingua franca of numerical computing, but in Go the choices are gonum (matrix-centric, amd64-only assembly) or a C extension. go-ndarray brings the n-dimensional array vocabulary — shapes, strided views, broadcasting, ufuncs, reductions and linear algebra — to Go with no cgo, cross-compiling to a static binary everywhere. The hot paths are multicore, and SIMD on amd64 and arm64.
NumPy is the lingua franca of numerical computing, but in Go the choices are gonum (matrix-centric, amd64-only assembly) or a C extension. go-ndarray brings the n-dimensional array vocabulary — shapes, strided views, broadcasting, ufuncs, reductions and linear algebra — to Go with no cgo, cross-compiling to a static binary everywhere. The hot paths are multicore, and SIMD on amd64, arm64 and ppc64le.
CGO_ENABLED=0 across the org. No cgo, no BLAS shim.
Gated in CI, differentially checked against numpy.
Row-major strided arrays, NumPy broadcasting, and NumPy basic-indexing Slice returning strided views that share data.
Workspace arena for loopsBind the inputs with ws.Use, compute as usual, ws.Reset() at the end of each pass: results stop costing the garbage collector anything. On a Zen 3, x + y on 1 024 elements drops from 2.6 to 0.38 µs (2.1× NumPy).
go-asmgen SIMD kernels on amd64 (SSE2, AVX2/FMA picked at run time) and arm64 (NEON); riscv64, loong64, ppc64le, s390x and the 32-bit targets run the same pure-Go code those kernels are tested against.
go-asmgen SIMD kernels on amd64 (SSE2, AVX2/FMA picked at run time), arm64 (NEON) and ppc64le (VSX); riscv64, loong64, s390x and the 32-bit targets run the same pure-Go code those kernels are tested against.
Exp/LogPorts of Arm's optimized-routines: worst 0.504 / 0.508 ULP against a 300-bit reference, and correct where Go's amd64 math.Exp returns +Inf (golang/go#81995) and math.Log is wrong on subnormals (golang/go#56600).
The suite runs on amd64, arm64 and 386 natively and on riscv64/loong64/ppc64le/s390x/arm under qemu, on Linux, macOS and Windows, and compiles for every GOOS/GOARCH pair Go supports; v0.2.0 was also run on real amd64, arm64, ppc64le, riscv64 and loong64 hardware.
Ruby has no cgo-free ndarray (Numo::NArray and NMatrix are C extensions) and gonum's optimized assembly is amd64-only. go-ndarray pairs a portable pure-Go core with multicore fan-out and SIMD kernels.
No cgo, no BLAS shim. A portable pure-Go core, multicore, with SIMD kernels on amd64 and arm64 and a Workspace arena that takes the garbage collector out of loops. Faster than NumPy on whole-array and row reductions, on large Exp and on MatMul against single-threaded BLAS, slower against 16-thread BLAS — the numbers are on the performance page.
No cgo, no BLAS shim. A portable pure-Go core, multicore, with SIMD kernels on amd64, arm64 and ppc64le and a Workspace arena that takes the garbage collector out of loops. Faster than NumPy on whole-array and row reductions, on large Exp and on MatMul against single-threaded BLAS, slower against 16-thread BLAS — the numbers are on the performance page.