Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions layouts/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ <h1 class="head">NumPy-style n-dimensional arrays in pure Go.<br><span class="ac
<a class="btn btn-primary" href="https://go-ndarray.github.io/docs/">{{ partial "icons/book.html" . }}Read the documentation →</a>
<a class="btn btn-ghost" href="https://github.com/go-ndarray/ndarray">{{ partial "icons/github.html" . }}Browse the source</a>
</div>
<div class="trust"><span><b>{{ len .Site.Params.families }}</b> API families, NumPy's names</span><span><b>5</b> SIMD targets</span><span><b>CGO=0</b> no BLAS shim</span></div>
<div class="trust"><span><b>{{ len .Site.Params.families }}</b> API families, NumPy's names</span><span><b>6</b> SIMD targets</span><span><b>CGO=0</b> no BLAS shim</span></div>
</div>
{{/* Lines taken verbatim from the Example section of go-ndarray/ndarray's README at v0.2.2. */}}
<div class="term">
Expand Down Expand Up @@ -110,7 +110,7 @@ <h2>{{ len .Site.Params.families }} families, <i>NumPy's names</i>.</h2>
<div><div class="n">3.7–5.9×</div><div class="l">single-threaded OpenBLAS 0.3.34 on <code>MatMul</code> from 512² (Zen 3)</div></div>
<div><div class="n">≤ 0.51</div><div class="l">ULP for <code>Exp</code>/<code>Log</code>, ports of Arm's optimized-routines</div></div>
</div>
<p class="lead" style="max-width:none;margin-top:28px"><b>Measured, wins and losses.</b> Against NumPy 2.5.3 + OpenBLAS 0.3.34 on a 16-core AMD Zen 3: <b>faster</b> on whole-array <code>Sum</code>/<code>Mean</code>/<code>Max</code> at 4&nbsp;Mi (2.3–4.5×), <code>SumAxis(1)</code> (2.2×), <code>MaxAxis(1)</code> (1.7×), <code>Exp</code> from 256&nbsp;Ki elements (2.4–5.6×) and <code>MatMul</code> against single-threaded OpenBLAS (3.7–5.9× from 512²); <b>slower</b> against 16-thread OpenBLAS (<code>MatMul</code> 0.55× at 1024², <code>Dot</code>/mat·vec 0.16×) and on allocating elementwise forms outside a <code>Workspace</code>. On Apple silicon the packed GEMM reaches <b>tuned-BLAS parity at 1024²</b> and beats the pure-Go <code>gonum</code> <b>4–10×</b>.</p>
<p class="lead" style="max-width:none;margin-top:28px"><b>Measured, wins and losses.</b> Against NumPy 2.5.3 + OpenBLAS 0.3.34 on a 16-core AMD Zen 3: <b>faster</b> on whole-array <code>Sum</code>/<code>Mean</code>/<code>Max</code> at 4&nbsp;Mi (2.3–4.5×), <code>SumAxis(1)</code> (2.2×), <code>MaxAxis(1)</code> (1.7×), <code>Exp</code> from 256&nbsp;Ki elements (2.4–5.6×) and <code>MatMul</code> against single-threaded OpenBLAS (3.7–5.9× from 512²); <b>slower</b> against 16-thread OpenBLAS (<code>MatMul</code> 0.42× at 512² and 0.51× at 1024², though 1.44× faster at 256²; <code>Dot</code> 0.69× and mat·vec 0.52×, all measured in one run with NumPy) and on allocating elementwise forms outside a <code>Workspace</code>. On Apple silicon the packed GEMM reaches <b>tuned-BLAS parity at 1024²</b> and beats the pure-Go <code>gonum</code> <b>4–10×</b>. On the other targets, against its own scalar code on one core: on a RISC-V SpacemiT X60 the RVV kernels make <code>Sum</code> up to <b>5.8×</b> faster and cut <code>MatMul</code> time by 31–45%; on an IBM z17 the s390x kernels take <code>MatMul</code> 1024² from 340 to <b>70&nbsp;ms</b> and cut <code>Max</code> by 92–96%.</p>
</div></section>

<section id="repos" style="padding-top:20px"><div class="wrap">
Expand Down
Loading