Repository navigation
perf: refbench against NumPy on one core; replace the multicore page - #105
Merged
Merged
Conversation
…lticore page docs/perf.md compared multicore Go with single-threaded NumPy 2.2.4. The benchmarks move to bench/ (refbench v0.1.2, rbtest.Perf): one core on both sides, the pinned NumPy 2.5.4, interleaved rounds, a load gate, 256 rows (one per public function, or a named exemption in docs/perf-exempt.md), and a CI perf job on allocation counts. The old page is kept as docs/perf-history.md with a banner; docs/perf.md is now the method page and docs/perf-table.md is generated. The table is deferred (load 8-80): allocation counts only. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves ndarray's speed comparison onto go-scikit/refbench v0.1.2 and replaces the multicore page.
What changes
bench/(own module, as perf: migrate the SciPy comparison to refbench v0.1.1 (#33 step 1) go-numerics/special#35 and go-simd/floatsbench/perf):rbtest.Perf, 256 rows coveringArraymethods, constructors,fft,linalg,random(Generator, RandomState, package functions), one case per public function (several shapes of use get several rows) and 121 named exemptions with a reason indocs/perf-exempt.md.GOMAXPROCS=1, one BLAS/OpenMP thread in the reference worker), NumPy pinned at refbench's 2.5.4 (bench/refs.txt), interleaved rounds, load gate.fftrows include the plan on both sides.TestDataParitycompares the SHA-256 of both sides (24 distinct argument sets, complex ones included, all equal) andTestRefSmokeruns every NumPy call once (go test -perf.parity, run here before opening this PR).docs/perf-table.mdanddocs/perf.jsonare generated. The table is deferred: the host was at a 1-minute load of 8 to 80, so only allocation counts are recorded, no timing verdict. A timing run at a quiet load replaces it.docs/perf.mdis now the method page; the old multicore page is kept asdocs/perf-history.mdwith a banner (its kernel analysis is still referenced).README.mdno longer quotes the multicore ratios;BENCHMARKS.mdcarries a "not a verdict" banner.perfjob (allocation counts, table regeneration check, public-function inventory), withGOMAXPROCS=1in the environment because go-fft/fft reads it once at init (parallel.go reads GOMAXPROCS once at init: N-D transforms stay multi-core after GOMAXPROCS is lowered go-fft/fft#107).Issues
Choiceallocates twice per drawn element: 200 013 allocations for 100 000 draws), filed from the allocation counts in this PR; not fixed here.linalgSVD/Pinv/Lstsq/Eigh/QR/Eig allocate 90 to 276 times per 64 x 64 call); not fixed here.The timing measurement of the 256 rows (and an issue per slower row from
refbench issues) is the follow-up once the load allows it.🤖 Generated with Claude Code