Commit 92b4fcd
committed
G1 falsifier ANSWERED: the widening WAS the cost — 6.75x on the re-chain
The plan pre-registered this and left it open through both N2 and N3:
"build `gt_u8_to_mask`, re-run both probes; if neither the re-chain nor
the #308 crossover moves, the widening was not the cost and G1 drops in
priority." The re-chain moved.
`hex_tenant_mq_probe` carried its own admission at the widening site --
"widening costs 4x the bandwidth, so `n_gen` below is an UPPER bound on
the reveal term" -- and the T1 addition that would replace the bound with
a measurement has now landed. This adds the NATIVE u8 arm beside the
widened i32 one rather than replacing it, so both are timed in ONE
process on ONE dataset.
| tier | M1b: 6 masks | | | coal: one re-chain | | |
|---|---|---|---|---|---|---|
| | widened i32 | native u8 | ratio | widened i32 | native u8 | ratio |
| v4 / AVX-512 | 40810 ns | 5064 ns | **8.06x** | 6789 ns | 1006 ns | **6.75x** |
| v3 / AVX2 | 43798 ns | 5638 ns | 7.77x | 7189 ns | 1101 ns | 6.53x |
In the probe's own cost-model units (v4, x=4) a maneuver goes from
**1.02 maintained steps to 0.15** -- a re-chain used to cost a whole
maintained step and now costs about a seventh of one.
Three things about the method, because the number is only as good as they
are:
* **Bit-identity is asserted BEFORE either arm is timed.** A timing
comparison between two operations that do not produce the same answer
measures nothing; both `assert_eq!`s must pass or the probe aborts.
* **Same process, same data, same run.** Neither tier reproduces the
8.9 us the plan quotes for this re-chain (v4 6789 ns, v3 7189 ns), so
that historical absolute came from a build this one does not reproduce.
The RATIO is unaffected by that drift precisely because both arms are
measured side by side rather than across runs -- which is why the
native arm was ADDED rather than swapped in.
* **The widened column's own materialization is OUTSIDE the timed region**
(it is built once, up front). So 6.75x is the steady-state sweep cost
only, and the conservative reading -- it favours the widened arm.
**The ratio is nearly tier-independent (6.75x vs 6.53x), which says the
win is a WIDTH effect, not an ISA effect.** Arithmetic that bounds it:
for N elements the i32 path issues N/16 compares reading 4N bytes, the u8
path N/64 compares reading N bytes -- 4x fewer instructions AND 4x less
memory. Observed 6.5-8x exceeds either alone. The plausible remainder is
the packing: the i32 path must shift-and-OR each 16-bit group into its
word, while at u8 one chunk IS one whole word and the packing disappears
entirely. That attribution is a CONJECTURE consistent with the numbers,
not a separate measurement.
**Half the falsifier remains unrun, and it is blocked, not skipped.**
`r2il_column_scan_probe` is the other pre-registered half (its own header
names both gaps: no u8 comparator, no u64 range comparator -- N2 and N3
respectively). It needs a column dump from `r2sleigh-lift`'s
`win32_census`, which needs a Win32 PE binary; none exists in this
container. Substituting a synthetic dump would produce a number shaped
like the falsifier's answer without being it, and that probe's own docs
insist on "a real lift rather than a synthetic stream". So G2's
measurement stays open.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X6y3drwKSE2zSgoexheLFX1 parent 1c4e45f commit 92b4fcd
1 file changed
Lines changed: 50 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
57 | | - | |
| 56 | + | |
| 57 | + | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| |||
472 | 472 | | |
473 | 473 | | |
474 | 474 | | |
475 | | - | |
476 | | - | |
477 | | - | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
478 | 492 | | |
479 | 493 | | |
480 | 494 | | |
| |||
487 | 501 | | |
488 | 502 | | |
489 | 503 | | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
490 | 525 | | |
491 | 526 | | |
492 | 527 | | |
| |||
724 | 759 | | |
725 | 760 | | |
726 | 761 | | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
727 | 772 | | |
728 | 773 | | |
729 | 774 | | |
| |||
0 commit comments