Skip to content

fix(sycl): prevent cross-TU kernel identity collisions - #1551

Merged
lusoris merged 1 commit into
train/pre-rc1-correctness-20260924from
fix/bug048-sycl-residuals
Sep 25, 2026
Merged

lusoris merged 1 commit into
train/pre-rc1-correctness-20260924from
fix/bug048-sycl-residuals

Conversation

@lusoris

@lusoris lusoris commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Prevent Intel Arc from linking a SpEED chroma host closure to the temporal device image by giving the two SYCL translation units distinct launcher identities. Restore the explicit integer_moment_sycl.cpp output-capture alias lost by the silent revert, and add a portable source-contract red cap for unique kernel names, fp64-free SpEED device regions, and explicit output captures.

Type

  • fix — bug fix
  • sycl / cuda / simd — backend-specific

Checklist

  • Commits follow Conventional Commits and the commit is signed.
  • Formatting, scoped clang-tidy, make verify-all, strict MkDocs, pre-commit, and pre-push gates are green locally.
  • Unit tests pass: the complete CPU fast suite is 148/148.
  • The Arc A380 source, moment, chroma, temporal, and singular parity set is 5/5 at the unchanged 1e-4 tolerance.
  • GPU twins were reviewed; this repair changes only SYCL linker identity/capture boundaries and no arithmetic or public behavior contract.
  • The new Python regression test carries the repository's fork-local license header; no production C/C++ source or header was added.
  • This is not a breaking change.
  • No new ADR is required: ADR-0220 and ADR-0214 already own the fp64-free and parity contracts; this PR repairs implementation defects.

Bug-status hygiene

  • docs/state.md closes T-SYCL-SPEED-CHROMA-BOTH-SINGULAR-REGRESSED-2026-09-23 with current executable evidence. BUG-048 remains open until its other independently owned restoration sections land and are reverified on master.

Netflix golden-data gate

  • No Netflix assertAlmostEqual(...) score was modified.
  • No golden data, score snapshot, tolerance, or arithmetic expression was modified.

Cross-backend numerical results

Intel Arc A380 / oneAPI 2026.1.1 / Level Zero 1.17.39758+10
test_sycl_kernel_source_contract  PASS
test_sycl_float_moment_parity     PASS
test_sycl_speed_chroma_parity     PASS
test_sycl_speed_temporal_parity   PASS
test_sycl_speed_singular_parity   PASS
Result: 5/5 at the unchanged 1e-4 ADR-0214 tolerance

Deep-dive deliverables

  • Research digest — docs/research/2090-sycl-silent-revert-residuals-2026-09-24.md.
  • Decision matrix — the digest's ## Alternatives considered records the five evaluated options and selected minimum repair.
  • AGENTS.md invariant note — core/src/feature/sycl/AGENTS.md documents unique SpEED launcher identities and explicit output captures.
  • Reproducer / smoke-test command — pasted below.
  • CHANGELOG fragment — changelog.d/fixed/sycl-silent-revert-residuals.md.
  • Rebase note — docs/rebase-notes.md records the SYCL kernel-identity/capture invariant.

Reproducer

python3 core/test/test_sycl_kernel_source_contract.py -v

ONEAPI_DEVICE_SELECTOR=level_zero:gpu meson test -C build-sycl \
  test_sycl_speed_chroma_parity test_sycl_speed_temporal_parity \
  test_sycl_speed_singular_parity test_sycl_float_moment_parity \
  test_sycl_kernel_source_contract --print-errorlogs

Validation

  • Exact base: 4e6916d16ac57647105d14a47a6680117d6b5738.
  • Before the fix, the Arc singular red cap reproduced a NaN and object inspection found two intersecting generated kernel tags; rebuilt objects have zero intersections.
  • Arc A380 focused suite: 5/5 passed at unchanged 1e-4.
  • Complete CPU fast suite: 148/148 passed.
  • All three touched SYCL translation units: zero file-local clang-tidy diagnostics with the fresh oneAPI compilation database.
  • make verify-all, strict MkDocs, full changed-file pre-commit, state/changelog checks, and silent-revert checks passed.
  • Writable AGY normal-mode review completed naturally with PASS and no remaining edits.

Surface opt-outs

no docs needed: internal SYCL kernel identity and capture repair with no user-discoverable surface change.

no ffmpeg-patches update needed: no public header, C API, CLI flag, Meson option, pkg-config surface, or shipped FFmpeg integration changed.

Known follow-ups

No performance tuning, tolerance adjustment, retraining, or unrelated BUG-048 restoration is part of this PR.

@lusoris
lusoris enabled auto-merge (squash) September 24, 2026 11:04
@github-actions github-actions Bot added the type:bug Something isn't working label Sep 24, 2026
@lusoris
lusoris disabled auto-merge September 24, 2026 20:27
@lusoris
lusoris changed the base branch from master to train/pre-rc1-correctness-20260924 September 24, 2026 20:28
@lusoris
lusoris merged commit af7f60c into train/pre-rc1-correctness-20260924 Sep 25, 2026
93 of 94 checks passed
@lusoris
lusoris deleted the fix/bug048-sycl-residuals branch September 25, 2026 14:52
lusoris added a commit that referenced this pull request Oct 8, 2026
…9cb9479f2

The fork's records of its Netflix/vmaf pull requests and of the upstream
defects it tracks were last checked on 2026-10-01. Upstream master has
moved to 9cb9479f2 since, with the MSVC series, the arm64 ADM kernels,
the fused SpEED filter and a rewrite of integer_compute_adm(). This
brings the records up to date. No fork code and no score changes.

- known-upstream-bugs.md: 42 open pull requests instead of 15, which of
  them needed a rebase or a rework against 9cb9479f2, the #1494 and
  best15 status, the integer AIM change upstream (cffd5b77d), the arm64
  gap in #1602, and what is new upstream since the parity pin. The pin
  heading is unchanged.
- state.md: dated updates on the rows for #1422, #1551 (both halves),
  #1602, #1605, #1635, #1636 and #955.
- upstream_parity.d: the APSNR zero-error row also names #1618, which
  changes the same cap upstream; the allowlist page is regenerated.
- rebase-notes.d: what a port of upstream's arm64 ADM code (8bc5a5c6a,
  b41d2340a) must not copy, and the closed state of #1551.

Signed-off-by: Lusoris <lusoris@proton.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant