Skip to content

docs(state): close T-SYCL-ARC-SSIMULACRA2-PARITY-2026-06-03 (fixed by 8b7ae731a) - #1332

Closed
lusoris wants to merge 1 commit into
masterfrom
docs/close-t-sycl-arc-ssimulacra2-parity-2026-06-03
Closed

lusoris wants to merge 1 commit into
masterfrom
docs/close-t-sycl-arc-ssimulacra2-parity-2026-06-03

Conversation

@lusoris

@lusoris lusoris commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Summary

T-SYCL-ARC-SSIMULACRA2-PARITY-2026-06-03 was sitting in docs/state.md "## Open bugs" describing a defect that is not present on master. The row names uncompensated fp32 accumulation in the 3-pole IIR Charalampidis blur of core/src/feature/sycl/ssimulacra2_sycl.cpp::launch_blur; that was fixed on 2026-06-12 by 8b7ae731a ("fix: iter6 bundle", PR #865), which added Kahan compensated-summation state to all three poles — exactly the row's own closure condition (b). The ledger text was written against dd02029f9 (PR #852, 2026-06-08, the calibration-anchor partial fix) and was never refreshed, so the row read as open for three months and cost a re-investigation.

This PR moves the row into "## Recently closed" (one row per bug id, past tense, citing 8b7ae731a), and corrects the matching stale prose in scripts/ci/gpu_ulp_calibration.yaml, whose comment block still asserted "the IIR does not use Kahan compensation". Ledger and prose only — no behaviour change, no tolerance change.

Type

  • docs — documentation only

Verification (why the row is closed)

All against origin/master:

  1. git show origin/master:core/src/feature/sycl/ssimulacra2_sycl.cpp | grep -n -i 'kahan' → "Kahan (compensated) summation for the IIR recurrence state" and "Kahan-corrected IIR state update", both inside launch_blur<PASS>, which now carries float comp_0/comp_1/comp_2 and the full pattern per pole: const float y0 = (t0 - prev2_0) - comp_0; const float o0 = prev1_0 + y0; comp_0 = (o0 - prev1_0) - y0; (plus the _1 / _2 twins).
  2. git log --oneline -S'Kahan' origin/master -- core/src/feature/sycl/ssimulacra2_sycl.cpp → single commit 8b7ae731a (PR fix: iter6 bundle — 6 fixes (wave32 comment, UBSan, TSAN, vmaf-tune CRF, AI scripts, MCP conformance) #865, 2026-06-12), whose message documents the change as bounding per-iteration error to O(eps^2) without fp64 (ADR-0220 compliant).
  3. git log --oneline origin/master -- scripts/ci/gpu_ulp_calibration.yaml → last touch dd02029f9 (chore(bundle): 8 worktree branches drain — docs + sycl-parity + ci-promotion + tune-report #852), i.e. before the fix — which is why the YAML prose is stale.

Residual (recorded as prose, not as a defect)

scripts/ci/gpu_ulp_calibration.yaml keeps the sycl:0x8086:0x56a* entry at status: placeholder with ssimulacra2: 5.0e-3, because no Arc A380 re-measurement has been committed since the fix (git show origin/master:testdata/scores_sycl_a380_576.json | grep -c ssimulacra2 → 0). That is an outstanding hardware measurement, not a live code defect. Nothing was loosened: core/test/test_sycl_ssimulacra2_parity.c still has #define PARITY_TOL 5e-3 and the YAML tolerance value is unchanged.

Bug-status hygiene (ADR-0165)

  • docs/state.md updated in this PR — the row moves from "## Open bugs" to "## Recently closed", closed by 8b7ae731a. Exactly one table row per bug id; the vacated slot carries the usual <!-- ... moved to Recently closed ... --> marker. The related open row T-SYCL-ARC-ADM2-PARITY-1.1E-4-2026-09-05 gained a one-clause pointer so its "same class as the SSIMULACRA2 row" cross-reference no longer sends a reader back to a closed bug.

Netflix golden-data gate (ADR-0024)

  • I did not modify any assertAlmostEqual(...) score in the Netflix golden Python tests.

Deep-dive deliverables (ADR-0108)

  • Research digest — no digest needed: trivial. The investigation is a ledger correction; the original analysis already lives in docs/research/0985-sycl-parity-divergence-2026-06-03.md and the closing evidence is inlined in the state.md row.
  • Decision matrix — no alternatives: only-one-way fix. A ledger row describing a fixed defect either moves to the closed section or stays wrong.
  • AGENTS.md invariant note — no rebase-sensitive invariants. No code, header, or build surface is touched.
  • Reproducer / smoke-test command — pasted below under "Reproducer".
  • CHANGELOG fragment — changelog.d/changed/1325-state-md-close-sycl-arc-ssimulacra2-parity.md; CHANGELOG.md regenerated by scripts/release/concat-changelog-fragments.sh --write.
  • Rebase note — no rebase impact: ledger and CI-comment prose only, no upstream-mirrored file touched.

Reproducer

git show origin/master:core/src/feature/sycl/ssimulacra2_sycl.cpp | grep -n -i 'kahan'
git log --oneline -S'Kahan' origin/master -- core/src/feature/sycl/ssimulacra2_sycl.cpp
python3 -c "import yaml; yaml.safe_load(open('scripts/ci/gpu_ulp_calibration.yaml')); print('yaml ok')"
pre-commit run --files ./docs/state.md ./scripts/ci/gpu_ulp_calibration.yaml ./CHANGELOG.md

Known follow-ups

Re-run ./build-sycl/test/test_sycl_ssimulacra2_parity on Arc A380 hardware once a self-hosted DG2-G10 runner exists, then either promote the sycl:0x8086:0x56a* entry to status: calibrated with the measured tolerance, or open a fresh docs/state.md row with the post-Kahan number if the delta still exceeds 5e-3. The gate could not be re-run on the audit host: no SYCL build directory and no oneAPI toolchain configured there.

…b7ae73)

The row sat in "## Open bugs" pointing at uncompensated fp32 accumulation
in the 3-pole IIR Charalampidis blur of
core/src/feature/sycl/ssimulacra2_sycl.cpp::launch_blur. That defect is not
present on master: 8b7ae73 ("fix: iter6 bundle", PR #865, 2026-06-12)
added Kahan compensated-summation state (comp_0/comp_1/comp_2) to all three
poles of launch_blur<PASS>, which is exactly the row's own closure
condition (b).

The ledger text was written against dd02029 (PR #852, 2026-06-08 — the
calibration-anchor partial fix) and was never refreshed after #865, so the
row read as open for three months and cost a re-investigation.

Moves the row (one row per bug id) into "## Recently closed", rewritten in
past tense and citing 8b7ae73. The residual is recorded as prose, not as
a defect: scripts/ci/gpu_ulp_calibration.yaml still carries the
sycl:0x8086:0x56a* entry at status: placeholder because no Arc A380
re-measurement has been committed since the fix. That file's comment block
and notes: prose still claimed "the IIR does not use Kahan compensation",
so they are corrected here too. The ssimulacra2: 5.0e-3 tolerance and
core/test/test_sycl_ssimulacra2_parity.c's PARITY_TOL 5e-3 are untouched.

Ledger and prose only; no behaviour change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@lusoris lusoris added this to the 1.0.0 — First release milestone Sep 5, 2026
@lusoris

lusoris commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

Superseded — the row is already closed on master.

T-SYCL-ARC-SSIMULACRA2-PARITY-2026-06-03 sits under ## Recently closed in docs/state.md at origin/master (line 385), moved there by #1314 ("revert pseudo-Kahan recurrence and calibrate Arc A380"). There is no stale Open row left to move.

Rebasing would re-add a second row for the id, which scripts/ci/check-state-md-rows.sh (added by #1322) now rejects — and it also conflicts in scripts/ci/gpu_ulp_calibration.yaml against the calibrated tolerance #1314 landed. Closing rather than rebasing.

@lusoris lusoris closed this Sep 6, 2026
@lusoris
lusoris deleted the docs/close-t-sycl-arc-ssimulacra2-parity-2026-06-03 branch September 18, 2026 07:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant