Skip to content

fix(sycl): accept bare native images in AOT image check - #1651

Merged
lusoris merged 1 commit into
masterfrom
fix/sycl-aot-check-single-target
Oct 1, 2026
Merged

lusoris merged 1 commit into
masterfrom
fix/sycl-aot-check-single-target

Conversation

@lusoris

@lusoris lusoris commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

Summary

A SYCL build configured with a single AOT target (e.g. -Dsycl_icpx_aot_targets=dg2-g11, recommended for Arc A380 fleets) failed the sycl_aot_image_check step because ocloc writes bare ELF native binaries instead of ar fat binaries when given exactly one device acronym. This change updates core/src/sycl/check_aot_image.py to accept both forms, extracting the GPU IP version from the HardwareIpVersion IntelGT product-config note (type 6) in .note.intelgt.compat.

Type

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

Checklist

  • Commits follow Conventional Commits (the commit-msg hook enforces this).
  • make format && make lint is green locally.
  • Unit tests pass: python3 scripts/ci/run_meson_test.py -- -C build.
  • If I touched any SIMD/GPU code path, I ran /cross-backend-diff and the worst ULP is ≤ 2.
  • If I touched a feature extractor with SIMD/GPU twins, I either updated every twin or listed the gap under "Known follow-ups" below.
  • If I added a new .c / .cpp / .cu / .h / .hpp, it has the appropriate license header (see CONTRIBUTING.md).
  • If this is a breaking change, the commit message uses ! or BREAKING CHANGE: and the migration path is documented below.
  • If this PR adds an ADR, the ADR row lives in docs/adr/_index_fragments/<NNNN-slug>.md and the slug is appended to docs/adr/_index_fragments/_order.txt — do not edit docs/adr/README.md directly (regenerated by scripts/docs/concat-adr-index.sh; see ADR-0221).

Bug-status hygiene (ADR-0165)

  • docs/state.md updated in this PR with a row in the appropriate section (Open / Recently closed / Confirmed not-affected / Deferred), OR no state delta: REASON.

Netflix golden-data gate (ADR-0024)

  • I did not modify any assertAlmostEqual(...) score in the Netflix golden Python tests.
  • If I believe a golden value must change, I have explained why below AND pinged @lusoris for a CODEOWNERS exception.

Cross-backend numerical results

no numeric changes: build-time verification script and test only

Deep-dive deliverables (ADR-0108)

  • Research digest — no digest needed: trivial.
  • Decision matrix — no alternatives: only-one-way fix.
  • AGENTS.md invariant note — added to the relevant package's AGENTS.md, OR "no rebase-sensitive invariants".
  • Reproducer / smoke-test command — pasted below under "Reproducer".
  • CHANGELOG fragment — a new file under changelog.d/<section>/<topic>.md (added / changed / deprecated / removed / fixed / security). Do not edit CHANGELOG.md directly — scripts/release/concat-changelog-fragments.sh renders the Unreleased block from the fragment tree (see ADR-0221).
  • Rebase note — entry added to docs/rebase-notes.md under a new ID, OR no rebase impact: REASON.

Reproducer

python3 core/test/test_sycl_aot_image_check.py

Known follow-ups

None.

@github-actions github-actions Bot added the type:bug Something isn't working label Sep 30, 2026
sycl_aot_image_check failed every build configured with one AOT target,
such as -Dsycl_icpx_aot_targets=dg2-g11 (the single-target example in
docs/backends/sycl/overview.md), with "holds no ocloc fat binary".

ocloc writes an image in one of two forms based on the number of device
acronyms it was given:
- two or more (even sharing one IP): an ar fat binary;
- exactly one: a bare zebin, a relocatable ELF with no archive around it.

check_aot_image.py now accepts both forms. It reads the GPU IP version of
a bare zebin from its .note.intelgt.compat IntelGT product-config note
(type 6, HardwareIpVersion word matching 'ocloc ids'), treating it as an
image carrying that one IP version so that completeness, --partial, and
count rules apply to both forms identically.

Closes T-SYCL-AOT-CHECK-REJECTS-SINGLE-TARGET-2026-09-30.
@lusoris
lusoris force-pushed the fix/sycl-aot-check-single-target branch from 52b6495 to 588a815 Compare October 1, 2026 02:03
@lusoris
lusoris merged commit c7f2831 into master Oct 1, 2026
75 checks passed
@lusoris
lusoris deleted the fix/sycl-aot-check-single-target branch October 1, 2026 02:03
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