Skip to content

HRX: hrx-backend-test cannot build at fork tip ad18320a (deleted dispatch-symmetric-i4.h still included) #422

Closed

Description

@bong-water-water-bong

Pre-existing defect: hrx-backend-test cannot build at 1bit/hrx-vulkan-patched ad18320a

Found while building the fork tip for engine#389 / engine#390. Separate from both; not folded into either PR.

Symptom

$ cmake --build build-hrx -j6 --target hrx-backend-test
[100/422] ...
FAILED: [code=1] tests/CMakeFiles/hrx-backend-test.dir/hrx-backend-test.cpp.o
tests/hrx-backend-test.cpp:9:10: fatal error: 'dispatch_registration/common/dispatch-symmetric-i4.h' file not found

Building the default all target stops here, so the whole test target set is unbuildable at the tip.

Root cause (checked, not inferred)

  • tests/hrx-backend-test.cpp:9 includes dispatch_registration/common/dispatch-symmetric-i4.h.
  • The header existed until commit f2099e9b75a58b4489da013fa5dbe267c4034f51 ("hrx: keep our ggml-hrx backend on AMD's core",
    2026-10-06T12:57:24-03:00), which deleted it (.../dispatch-symmetric-i4.h | 37 ---------), one file changed.
  • f2099e9b is an ancestor of ad18320a (git merge-base --is-ancestor f2099e9b HEAD -> true), so the break has
    been on the branch since 2026-10-06.
  • The test still calls the deleted header's symbol: tests/hrx-backend-test.cpp:7111
    ggml::hrx::common_symmetric_i4_lowrow_mul_mat_eligible(...), and registers
    suite.host_case("symmetric_i4_consumer_qualification", ...) at line 13744. Fixing the include alone is not
    enough; the test body needs the same treatment the header got.

Commands

git log --oneline --diff-filter=D -- ggml/src/ggml-hrx/dispatch_registration/common/dispatch-symmetric-i4.h
# f2099e9b hrx: keep our ggml-hrx backend on AMD's core
git show --stat f2099e9b -- ggml/src/ggml-hrx/dispatch_registration/common/dispatch-symmetric-i4.h
ls ggml/src/ggml-hrx/dispatch_registration/common/ | grep -i symmetric   # no output

Environment: ryzen, clone team/wt/ggml-hrx, HEAD ad18320a2955736d62b6e2b39908aeed6a2b5cd9.

Activity

  1. bong-water-water-bong commented on Oct 18, 2026

    @bong-water-water-bong
    CollaboratorAuthor

    Status: the scope is wider than hrx-backend-test. The same f2099e9b deletion also breaks tests/test-hrx-ops.cpp:3, which includes dispatch_registration/common/dispatch-activation-publication.h. That's at 1a5dcba2 and still at the new llama.cpp line 8d9ce2c1a from #441.

    The cause is the same for both. f2099e9b put ggml/src/ggml-hrx back to our backend as of 522dab47, but left AMD's newer test files outside that directory: hrx-backend-test.cpp, test-hrx-ops.cpp, test-hrx-loom-jit.cpp, test-hrx-buffer.cpp and testing_suite.h. None of our commits touched those files after 522dab47.

    The fix is being worked on the new line. Next step is a full compiler error list for all five files, once strixhalo is quiet: two builds were stopped by its 93 C guard tonight.

  2. bong-water-water-bong commented on Oct 18, 2026

    @bong-water-water-bong
    CollaboratorAuthor

    Fix in the fork: 1bit-MONSTER/llama.cpp#103 (1bit/hrx-test-symmetric-i4-removed off 1bit/hrx-vulkan-patched @ 8d9ce2c1).

    What it does: removes the dispatch-symmetric-i4.h include, the common_symmetric_i4_lowrow_mul_mat_eligible() call and the two values that existed only for it. The case keeps its remaining checks (no loom_libs:ggml_rmsnorm_binary_symmetric_i4_k32 dispatch for those consumer shapes, q8_publication). Verified on CPU with the target's include paths: the fatal "file not found" is gone.

    One finding this issue should carry, because the title's claim ("the whole test target set is unbuildable") has a second cause: with the include fixed, tests/hrx-backend-test.cpp reaches 20 more errors from the AMD-core re-head (f2099e9b / 53d443cd), so the target still does not build.

    • dispatch.kernel.workload_specialization / ggml::hrx::WorkloadSpecialization at lines 3298, 5191, 7352, 7547: KernelSpecialization has no such member, and nothing in ggml/src/ggml-hrx mentions a workload specialization or token_capacity any more.
    • plan.metadata.activation_publication_diagnostics() at 6328-6338 and 10894-10895: CommandPlanMetadata keeps alternate_values() only.
    • one excess elements in struct initializer at line 9564.

    tests/test-hrx-ops.cpp and tests/test-hrx-loom-jit.cpp use the same removed members, so all three files need the same port. I did not guess at what the removed assertions should become; that is a separate change against the current dispatch API.

    The engine pin does not need to move for this: cmake/hrx.cmake builds only llama-server and llama-bench, never the tests.

  3. bong-water-water-bong commented on Oct 18, 2026

    @bong-water-water-bong
    CollaboratorAuthor

    llama.cpp fork PR #104 is merged into 1bit/hrx-vulkan-patched as 8dafc4a05. It restores tests/hrx-backend-test.cpp, test-hrx-ops.cpp and test-hrx-loom-jit.cpp. The engine still pins 8d9ce2c1a; the pin bump comes next. The stale routing expectations are tracked in #444.

  4. bong-water-water-bong commented on Oct 18, 2026

    @bong-water-water-bong
    CollaboratorAuthor

    Status check (issue hygiene pass, 2026-10-18): the failing include is fixed on the llama.cpp branch, the engine pin is not updated yet, so this stays open.

    Fixed, merged in the fork. The include and the deleted header's symbol are gone:

    • 1bit-MONSTER/llama.cpp PR HRX: pin llama.cpp 96f6b89, fixing #95 (GLM-4.7-Flash, Qwen3-Coder at full context) #104, commit 8dafc4a050ba ("tests: build the HRX tests against the ggml-hrx we ship (engine#422)"), merged into 1bit/hrx-vulkan-patched. tests/hrx-backend-test.cpp no longer includes dispatch-registration/common/dispatch-symmetric-i4.h, tests/test-hrx-ops.cpp no longer includes dispatch-registration/common/dispatch-activation-publication.h, and common_symmetric_i4_lowrow_mul_mat_eligible() is no longer called (a comment says why). Neither header exists at 953b6397 (the branch tip now), and tests/CMakeLists.txt still builds hrx-backend-test, test-hrx-ops and test-hrx-loom-jit.
    • The per-case runner that item 2 of this issue asked for is in the same branch: registry: causes of the two ZINC failures (Qwen2.5-7B load crash, MiniCPM5 empty reply) #105 (7227a771), so one red case no longer hides the rest.
    • Both test files are still present and buildable at the current branch tip 953b6397.

    Not verified here, and why. The build itself was not run in this pass: the only HRX builds on this box go through the engine's ExternalProject (cmake/hrx.cmake), which builds llama-server and llama-bench only and needs the TheRock toolchain, so a full compile of the HRX test binaries is a GPU host job (there was a #315 cell and an hw_gate run holding the box). Evidence in the thread rather than on this box: #443's hw_gate on the engine side built the pinned 8d9ce2c1a, test-backend-ops ran 611/611, and #445's thread reports hrx-backend-test at 66 total cases (44 passed, 13 failed, 9 known-fail) on 7227a771, i.e. the suite compiles and runs past its first case.

    Engine pin still behind. Engine main pins llama.cpp 8d9ce2c1a (third_party/llama.cpp, moved by #441); the fix only reaches it with #451 (8dafc4a050ba) or #453 (7227a7711ba0), both open. Both are currently red on the same thing, unrelated to this issue: hw_gate stops on kld baselines missing for qwen3-0.6b / zaya1-8b / qwen3.8-27b (record them at the release pin, docs/hw-gate.md) and the qwen3.8-27b serve arm aborts on the 88 C guard (rc 137).

    Closing this needs: the pin PR merged and the pinned test targets built once on the HRX host. I am not closing it on the fork evidence alone.

  5. bong-water-water-bong commented on Oct 18, 2026

    @bong-water-water-bong
    CollaboratorAuthor

    Fixed by 1bit-MONSTER/llama.cpp#104 (merged 2026-10-18, 8dafc4a0): the deleted dispatch-symmetric-i4.h include is gone and hrx-backend-test builds again; #105 (7227a77) then made the runner report every case. The symmetric-i4 route itself is tracked in #450.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions