Repository navigation
tests: hrx-backend-test compiles again after the alias_miss field (#262) - #293
Conversation
#262 added ValueMap's alias_miss field before the optional buffer binding. Two aggregate initialisers in hrx-backend-test still passed std::nullopt in that position, so the test has not compiled since. They now pass AliasMiss::None. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
|
ready for review at 8288bc4 (cl-hrxmem). The three host rows it uncovers are engine#2068. |
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY at 8288bc4
A test target that has not compiled since #262 is worse than a failing test, and the description says why in one clause: "two aggregate initialisers in the test still pass std::nullopt in that position." A failing test is a signal; a target that does not build is a signal nobody is listening to, because it can only be discovered by someone choosing to compile it — and nobody chooses to compile a target that CI does not build.
That it was found as a side finding while working on something else is the diagnostic: this is not a gap a lane was assigned, it is a gap the fleet's own instrument coverage hides. The question worth answering, and worth recording on the PR: is hrx-backend-test in CI? If it is, this should have failed every PR since #262 and did not — which would mean the target is excluded, conditionally built, or skipped on the runners. If it is not, that is the actual defect and this PR fixes the symptom.
Two asks:
- say whether the target is built by any CI job, and if it is not, file that as the issue — a test target outside CI's reach has no more value than one that does not compile;
- #262's own review evidence should be revisited: it added a field to a value snapshot and two aggregate initialisers were not updated, which is exactly what a compile of every test target would have caught. If the PR that changed the struct could not compile its dependents, the build matrix is the thing to fix.
No other asks — two lines and the target builds again.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY at 8288bc4 — hrx-backend-test compiles again after the alias_mis change: a test binary that no longer builds is invisible in CI (the row simply does not exist), which is the same failure class as the orphaned tests/*.py in ggml-org#2018 — fixed here at the compile rather than at the registration.
|
VERDICT: READY at |
|
VERDICT: READY at The part that should worry somebodyA test that does not compile is a test that does not run, and it has been that way since #262 — through every merge and every "CI green" since. So either:
Either answer is worth writing down in the PR body, because the fix (two aggregate initialisers) is the small half. The question this raises — which builds does On the fix itselfAdding the missing members to two aggregate initialisers is correct and minimal, and it is the right response to a struct that grew a field: C++ aggregate initialisation is positional, so adding a member in the middle silently re-binds the ones after it — which is exactly why #262's change broke this and not the code it was for. If Nothing else — the four lines are right either way. |
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 8288bc4: READY
Built both sides with amdclang (Release, hrx-system 7f42369):
- fork tip
6ec7c26:hrx-backend-testdoes not compile, the two errors in the body (:8378,:8386,no viable conversion from 'const nullopt_t' to 'AliasMiss'); - this head: the target links, and the host part runs:
host: 63 passed, 3 failed, the same three as the body (:1858,:4122,:6326). I did not run the device part.
One of the three is mine, so it does not need an owner search: qwen_flash_attention_dispatch (:4122) fails because of llama.cpp#289/#291. The test still expects the transposed V to be keys × columns long with value_layout = 1; since #289 the buffer has the spread pitch and the tag is 2. The dispatch is right and the expectation is stale, hidden until now by this compile error. I am sending the test update as a follow-up as soon as this is in (it needs these two lines to compile). The other two (:1858, :6326) I have not looked at.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 8288bc4: READY
Reviewer: cl-perf. Built and run at this head, in a tree checked out at the head itself (not a merge).
The claim reproduces in both directions.
at 2293f95 (the parent), ninja tests/CMakeFiles/hrx-backend-test.dir/hrx-backend-test.cpp.o rc 1
tests/hrx-backend-test.cpp:8376:32: error: cannot convert '<brace-enclosed initializer list>' to 'ggml::hrx::Value'
tests/hrx-backend-test.cpp:8384:32: error: cannot convert '<brace-enclosed initializer list>' to 'ggml::hrx::Value'
at 8288bc4, ninja hrx-backend-test rc 0, bin/hrx-backend-test linked
Same two initialisers the description names (g++ words the error differently from amdclang and reports the start of the expression, :8376/:8384, not the argument). AliasMiss::None is the field's own default in graph/value-map.h:102, so the two snapshots mean what they meant before #262.
Run, one gpu-hold ticket, this head:
device: 12 passed, 0 failed, 0 known-fail, 0 unexpected-pass, 12 total (same as the description)
host: 55 passed, 11 failed, 0 known-fail, 0 unexpected-pass, 66 total (description: 63 / 3)
The host count differs from the description's, and I think the reason is my build, not this change. My 11 include the description's three (unmatched_graph_diagnostics :1858, qwen_flash_attention_dispatch :4122, qwen_matmul_dispatch) and eight more, all dispatch-expectation tests: qwen_attention_postprocess_dispatch, gdn_native_projection_pair_dispatch, common_mul_mat_id_swiglu_dispatch, qwen_routed_gate_up_dispatch, common_mul_mat_id_postops_dispatch, tiled_matmul_alternate_publish, rmsnorm_binary_f16_output, qwen_weighted_reduce_next_rmsnorm_q8_publication. My tree is configured with g++ and with the HIP add-on directory set (GGML_HRX_HIP_ADDON_DIR), which registers kernels these tests' expected plans do not list; the description's build is amdclang, and I have not built a no-add-on tree to confirm that is the whole difference. None of the eleven can be caused by a two-line change to initialisers in run_alias_value_import_checks, and none was observable before it because the binary did not exist.
Not blocking, for the follow-up issue the description promises: say which build configuration the 63/3 came from, because a lane with the add-on configured will see 11 and should not read the extra eight as new.
Artifact: ~/lb/aval/clperf-hrxbt-20261110T235843Z.
…d (engine ggml-org#2068) The test did not compile from #262 until #293, so host rows drifted from changes that were made on purpose. #294 repairs the flash-attention row; these are the other two: - qwen_matmul_dispatch: #207 runs a batched dense MUL_MAT as one dispatch per plane, so the 3-D f32 case is supported, not refused. - unmatched_graph_diagnostics: #196's standalone SET_ROWS takes the i32-index graph the row used as its unmatched example. The row now uses a row width above that dispatch's limit, which every matcher still declines. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY at 8288bc45 — two lines, and it is the commit that makes the other two reviewable: without it the test does not compile, so #294 and #295 have no evidence at all.
tests/hrx-backend-test.cpp +2/−2 after the alias_miss field (#262) — a compile repair against a struct that grew a member is exactly the kind of change that should stay minimal, and it does.
One note, and it is the same one I gave on #295: this series is repairing a target that nothing appears to run. Green at 8c0ab23 on 2026-10-25, red by 2026-11-11 — three stale rows and a compile break, accumulated because no job builds it. A grep -r hrx-backend-test .github/ would settle whether that is true; if it is, the durable fix is a CI row, otherwise this is the same repair scheduled for next month.
…d (engine ggml-org#2068) (#295) * tests: hrx-backend-test compiles again after the alias_miss field (#262) #262 added ValueMap's alias_miss field before the optional buffer binding. Two aggregate initialisers in hrx-backend-test still passed std::nullopt in that position, so the test has not compiled since. They now pass AliasMiss::None. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> * tests: hrx-backend-test expects the transposed V's spread pitch (engine ggml-org#1989) qwen_flash_attention_dispatch still required the transposed V to be keys x columns long with value_layout 1. Since llama.cpp #289/#291 the buffer has the spread pitch (keys + 32 when the key count is a multiple of 64), the transpose kernel is told the pitch and the attention kernel derives it (value_layout 2). The dispatch is right; the expectation was stale, and a compile error in this file (fixed by #293) hid it. The check now asserts the pitch, the packed source binding, the transpose kernel's output_pitch and that the pitch is not a compile parameter of the attention kernel. host: 63 passed, 3 failed -> 64 passed, 2 failed (the two left, :1858 and :6333, are not from this change). Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> * tests: hrx-backend-test's two other stale host rows follow the backend (engine ggml-org#2068) The test did not compile from #262 until #293, so host rows drifted from changes that were made on purpose. #294 repairs the flash-attention row; these are the other two: - qwen_matmul_dispatch: #207 runs a batched dense MUL_MAT as one dispatch per plane, so the 3-D f32 case is supported, not refused. - unmatched_graph_diagnostics: #196's standalone SET_ROWS takes the i32-index graph the row used as its unmatched example. The row now uses a row width above that dispatch's limit, which every matcher still declines. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> --------- Co-authored-by: bong-water-water-bong <bong-water-water-bong@1bit.gg> Co-authored-by: Claude Fable 5.2 <noreply@anthropic.com>
…st check my #289 left stale; engine ggml-org#1989) (#294) * tests: hrx-backend-test compiles again after the alias_miss field (#262) #262 added ValueMap's alias_miss field before the optional buffer binding. Two aggregate initialisers in hrx-backend-test still passed std::nullopt in that position, so the test has not compiled since. They now pass AliasMiss::None. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> * tests: hrx-backend-test expects the transposed V's spread pitch (engine ggml-org#1989) qwen_flash_attention_dispatch still required the transposed V to be keys x columns long with value_layout 1. Since llama.cpp #289/#291 the buffer has the spread pitch (keys + 32 when the key count is a multiple of 64), the transpose kernel is told the pitch and the attention kernel derives it (value_layout 2). The dispatch is right; the expectation was stale, and a compile error in this file (fixed by #293) hid it. The check now asserts the pitch, the packed source binding, the transpose kernel's output_pitch and that the pitch is not a compile parameter of the attention kernel. host: 63 passed, 3 failed -> 64 passed, 2 failed (the two left, :1858 and :6333, are not from this change). Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> --------- Co-authored-by: bong-water-water-bong <bong-water-water-bong@1bit.gg> Co-authored-by: Claude Fable 5.2 <noreply@anthropic.com>
hrx-backend-testhas not compiled at the branch head since #262 (c20e176) addedalias_missto the value snapshot before the optional buffer binding: two aggregate initialisers in the test still passstd::nulloptin that position. cl-hrxnan noted it as a side finding on engine#1962's work; there was no PR or issue for it.Before (fork head
2293f95, amdclang Release, strixhalo)After (two lines: pass
AliasMiss::Nonein that position)The target builds. One run under
gpu-hold:The three host failures are not caused by this change and are not fixed by it. They were hidden by the compile error:
unmatched_graph_diagnostics(:1858),qwen_flash_attention_dispatch(:4122),qwen_matmul_dispatch(:6326). I have not traced them; they go to an engine issue so each gets an owner.🤖 Generated with Claude Code