Skip to content

[DO NOT REVIEW] Revert #5201 null-as-miss; drop null problem-cache sentinels on load (gpuep-rel-2610) - #5208

Merged
tperry-amd merged 2 commits into
gpuep-releases/gpuep-rel-2610from
problem-cache-drop-nulls-2610
Aug 27, 2026
Merged

[DO NOT REVIEW] Revert #5201 null-as-miss; drop null problem-cache sentinels on load (gpuep-rel-2610)#5208
tperry-amd merged 2 commits into
gpuep-releases/gpuep-rel-2610from
problem-cache-drop-nulls-2610

Conversation

@danieyan-amd

Copy link
Copy Markdown
Contributor

Reverts #5201 (already merged into gpuep-rel-2610) and replaces it with the load-boundary fix.

Why revert #5201

#5201 fixed the shipped-null crash by treating a null cache entry as a miss. But a null mark() sentinel is a transient in-run dedup signal: compile_ops benchmarks a repeated problem once (the first instance marks it; duplicates see the null and skip). Treating it as a miss removes that dedup, so a repeated problem is benchmarked once per instruction instead of once (raised in review on the develop counterpart #5204).

The fix (2nd commit)

Keep the in-run dedup (get()/compile_ops unchanged from the original) and instead drop null sentinels at the load boundary in the json and sqlite backends. A persisted or shipped null can no longer come back, so it cannot cause the original skip-and-crash (AIRADSW-871), and repeated problems are still benchmarked once. The is_module_fusible null/non-string guard from #5201 is kept.

This is the release counterpart of develop #5204, which is build- and test-verified (reduced MLIR-off gfx1100 build, all four problem-cache test binaries pass). Not built on this box (the 2610 build needs MIOpen); CI validates here.

Commits

  1. Revert [DO NOT REVIEW] Treat null problem-cache entries as a miss instead of skipping compile (gpuep-rel-2610) #5201 (null-as-miss).
  2. Drop null problem-cache sentinels on load, keep in-run dedup.

danieyan-amd and others added 2 commits August 27, 2026 18:48
This reverts commit cb3333a, reversing
changes made to cc26a24.
A null mark() sentinel is a transient in-run 'benchmark in progress' signal that compile_ops relies on to benchmark a repeated problem only once. It must not be persisted: a shipped or stale null that is re-loaded makes the op skip forever, leaving it unresolved (0xC0000005 / 'No valid tuned compilation', AIRADSW-871).

Drop null sentinels at the load boundary in the json and sqlite backends so a persisted null cannot come back, while the in-run dedup (get()/compile_ops) is unchanged. Also guards is_module_fusible against a null or non-string solution. Updates the backend round-trip tests (a sentinel no longer survives save/load).

Co-authored-by: Uros Petkov <[email protected]>
Signed-off-by: danieyan-amd <[email protected]>
@danieyan-amd
danieyan-amd requested a review from causten as a code owner August 27, 2026 22:50
@tperry-amd
tperry-amd merged commit 1217ce1 into gpuep-releases/gpuep-rel-2610 Aug 27, 2026
15 of 18 checks passed
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.

2 participants