mirror of
https://github.com/bdbrown4/peltier.io.git
synced 2026-11-07 19:08:27 +00:00
The parser/service targets only ever needed byte-identical golden replay.
The kernel lane is the case that breaks it: a matmul optimization
(transpose-B for cache locality + eight-accumulator ILP) that REORDERS the
floating-point reduction, so its low bits differ by construction —
byte-identical is the wrong gate.
Adds:
- EquivalencePolicy::compare + Divergence (diff-test): byte-identical is
exact; fp-tolerance tokenizes and compares numeric tokens within
abs + rel*|baseline|, with explicit NaN handling. Non-numeric tokens and
token-count mismatches still fail exactly.
- fp-compare bin: applies a target's equivalence.toml to two output files.
- targets/matmul/kernel.c: matmul_ref (single-accumulator oracle) vs
matmul_opt (reordered, faster), with emit/check/run/bench modes.
- targets/matmul/equivalence.toml: fp-tolerance abs 1e-4 + rel 1e-3.
- scripts/kernel-lane-demo.sh + results/phase5/kernel-lane.txt: byte-identical
FAILs, fp-tolerance is EQUIVALENT, a +0.5 perturbation is still REJECTED,
speedup 3.23× measured with the same interleaved A/B + bootstrap CI.
Ledger row phase5-matmul-opt = needs-human-review: using the FP-tolerance
tier at all is a human-review signal (SPEC §8), same posture as mimalloc.
The trust machinery is unchanged; only the timer and the gate differ, which
is exactly the shape a future GPU kernel would slot into.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EcKPWQ3MQD4NdEHwar96u2
15 lines
757 B
TOML
15 lines
757 B
TOML
# Kernel-lane equivalence policy (SPEC §13, §3.2). The blocked matmul
|
|
# reorders floating-point accumulation, so byte-identical golden replay is
|
|
# the WRONG gate — it would reject a correct optimization for differing in
|
|
# the last ULPs. Instead, numeric outputs must agree within tolerance;
|
|
# anything non-numeric still matches exactly, and a genuine wrong result
|
|
# (beyond the tolerance) is still caught.
|
|
#
|
|
# rel = 1e-3 is generous for f32 accumulation over 512 terms in a different
|
|
# order (observed max relative error ~1e-4); a real bug moves it far past
|
|
# this. Using this tier at all is itself a needs-human-review signal per
|
|
# SPEC §8 — a human confirms the tolerance is defensible for the workload.
|
|
mode = "fp-tolerance"
|
|
abs = 1e-4
|
|
rel = 1e-3
|