Repository navigation
docs(bench): ledger §40 — the shared-pack negative result, and softmax by phase - #1423
Conversation
|
Status: validated locally, held on required CI — not merging. Per instruction, this waits for the required checks (
So the required checks are currently unreachable, and this PR stays open until they run. It is not blocked on review or on any known defect. Local validation on this branch (not a substitute for CI, recorded for whoever merges):
|
|
Status: auto-merge armed, waiting on required CI. Not merging by hand. GitHub Actions has not concluded a run on this repo for some time (last 200 runs: 0 #1429 has to land before this one can go green. While replicating the CI lanes locally I Independent replication of both required checks on
|
57a4c4b to
3c32d65
Compare
… by phase Two results that are only useful written down. The experiment 39.4 left open (share one packed panel across row blocks) was run and lost, at every panel width and worse the wider the pool. The grid is recorded so it is not rediscovered. The win was one level up: distribute whole panels, which gets the same 'pack each panel once' property without a barrier. And softmax, profiled by phase rather than as a whole: pass 2 is 73% of the row and is throughput-bound, so the 4-accumulator fix that gives pass 1 a 1.8x makes pass 2 slower. Removing ops, not reordering them, is what worked. Closes the loop on 39.4. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… unit 40 was written so the fourth instance of "a threshold calibrated in one regime makes the wrong call in another" would be recognised rather than re-derived. 1484 is that instance, and it arrived with a variant 40 does not cover: the softmax fan-out's row floor was not calibrated in the wrong regime, it was expressed in the wrong unit. A row prices work only if d is held fixed, and d is the key length. The predicate already contained the honest form of the question one line below as an element floor, so the fix was to delete the proxy rather than retune it. Also records the testing lesson, which generalises further than the perf win: softmax rows are independent, so output is bit-identical whether or not the fan-out happens, and every correctness test in the file is blind to the gate by construction. Inverting the caller's use of the predicate undoes the whole optimisation and left 1448 tests green. A performance gate has no numerical signature and must be asserted directly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
15b2bdd to
88f5d33
Compare
Ledger write-up for #1402 and #1416. No code.
Records, in order:
k=6400a 512 KB panel is a single micro-panel, so splitting the pack by micro-panel leaves it on one thread).k >= 1024variant that scored better on grid geomean and was rejected for regressing a production shape.Also records the mixtral cell where the §39 control arm moved +66% and the ratio metric had to be abandoned for native-time-vs-control.
Update: adds §42 as well
mainclaimed## 40while this branch was open, so my original section wasrenumbered to §41 on rebase. This PR now also carries §42, recording the
softmax fan-out gate finding from #1484.
§42 is deliberately a continuation of upstream's §40 rather than a new theme.
§40 closes by asking that "the fourth instance is recognised rather than
re-derived"; §42 is that fourth instance, and it reports the way it differs
from the three §40 collected: the constant was not calibrated in the wrong
regime, it was expressed in the wrong unit. A row is not a unit of work —
nprices work only if
dis held fixed, anddis the key length. §40.3's remedy— record the regime beside the constant — would not have caught it.
§42.3 records the more transferable half: softmax rows are independent, so the
output is bit-identical whether or not the fan-out happens, which makes every
correctness test in the file blind to the gate by construction. Inverting the
caller's use of the predicate undoes the entire optimisation and left all 1448
tests green. A performance gate has no numerical signature and has to be
asserted directly.
§42.4 is a reporting note: the host was heavily contended for that run (A/A nulls
up to 61%), and the honest read came from structure rather than the grid — only
four of seven fixtures change gate decision at all, so the other three cannot
have moved and their scatter calibrates the host.
#1484's doc comment cites §42, so the two are written to land consistently in
either order.