Repository navigation
bump llama.cpp to 1703bfeaa: a gated-delta-net layer behind a type cast no longer fails the graph (fixes #1925) - #2134
Conversation
…st no longer fails the graph (fixes #1925) One fork commit past 7a1f2b81c: - 1703bfeaa (#302): the scheduler's dependency walk no longer counts an in-place CPY's own output as a pending input (a ggml_cast stalled the walk and everything after it was taken in index order, where the L2_NORM root of the fused gated delta net comes before the projections it reads); the fused matcher keeps a match whose layout alias was already passed. Measured on gfx1151 with the two changed objects replaced in an add-on build: Flash-Next UD-IQ3_XXS 18,782-token request, unsupported HRX node 1 -> 0, 390 of 390 fused roots accepted, the whole prefill runs. Qwen3.5-4B old vs new library: 128 of 128 tokens identical in three pairs, the same 33 dispatch registrations, decode 57.4/58.1 vs 58.3/58.2 tok/s. Host: test-hrx-gdn-passed-alias 7 cases, hrx-backend-test 66/66. Not shown: the 18.8k answer with the mask chain on the device against the CPU; those requests end in #1536's all-NaN logits on the old and the new library alike. registry/architectures.json: the recorded source pin only. docs/hrx.md: the #1925 section. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
|
ready for review at 7b419e2 (pin 7a1f2b81c -> 1703bfeaa, docs/hrx.md section, registry line; device and host rows in the body) |
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 7b419e2: READY
Reviewed head 7b419e2 (fixes #1925, release-blocker). A pin bump: third_party/llama.cpp 7a1f2b81c → 1703bfeaa, plus registry/architectures.json and docs/hrx.md.
The pin is the reviewed fork fix, and only that
1703bfeaais the squash-merge of llama.cpp#302 (merged=true,merge_commit_sha 1703bfeaa) onto the fork's1bit/hrx-vulkan-patched. #302 had READY verdicts at5742970and at its final headcf4f36d.git log 7a1f2b81c..1703bfeaais that one commit. Its diff is the two source files the body names (dispatch-gated-delta-net.cpp+20/−1,graph-traversal.cpp+10) plus the new host testtests/test-hrx-gdn-passed-alias.cppand its CMake row. Nothing else rides along.registry/architectures.json's"llama.cpp (hrx)"line moves to the same1703bfeaaaae16686e0ea5fd22b18b6fa2163fa1, so the registry and the gitlink agree.
Checked
git merge-treeonto current main: no conflicts.- CI at this head:
build,hrx_build, CodeQL, "hrx-system gitlink agrees with the hold file" and "pinned loom-jit.cpp compiles against the pinned hrx-system" all succeed. docs/hrx.md's new section matches the fix as #302 describes it (the in-place CPY no longer counts its own output as an input; a match whose layout alias was already passed is kept).
Not re-run by me: the device rows (Flash-Next 18,782-token request, 0 unsupported nodes; Qwen3.5-4B 128/128 identical tokens in three old/new pairs) and the fork's host test. I am taking those from the body and #302's reviews.
For the release lane, not blocking this PR: the fork has moved one commit past this pin. Its head b6f65a273 is llama.cpp#303 (merged), the #1962 draft-head logits fix (item 4), and 1703bfeaa is its direct parent. So this bump brings #1925's fix to engine main but not #303's. #1962 needs one more bump, or this one could go straight to b6f65a273. Either way, the #1962 row should not be read as landed from the fork merge alone.
|
VERDICT: READY Checked the two things a pin bump can get wrong, and the one claim in the docs that matters most to the release. 1. The bump points at the commit it credits, not an arbitrary tip. So 2. The docs section is honest about its own boundary, which is the unusual part and the reason I read it closely. It states the measured fix (1
That is the correct framing and it is load-bearing for the release: this bump fixes a graph-refusal (#1925), it does not fix #1536, and it says so instead of letting a I also verified the mechanism against the code rather than the prose: the named test One suggestion, not a blocker: the docs line "with only the two changed objects replaced" makes the measurement reproducible only by whoever did it. A sentence naming |
Fixes #1925
Moves the llama.cpp pin
7a1f2b81c->1703bfeaa, one fork commit (1bit-MONSTER/llama.cpp#302), and documents it indocs/hrx.md.What it fixes
Qwen3.8-Flash-Next, the first 512-token batch past 2,048 tokens of context with the sparse path's mask chain on the device:
The fused dispatch matched that node; the graph was walked in the wrong order. The scheduler's dependency walk counted an in-place CPY's own output as an input it had to wait for, so the CPY of a type cast never became ready, the walk stopped at it, and everything after it was taken in index order, where the
L2_NORMcomes before the projections its pattern reads. #302 stops counting a node's own output and makes the fused matcher keep a match whose layout alias was already passed. The full trail is on the issue.Measured (gfx1151, 2026-11-11)
The fork commit differs from the old pin in two source files. Device runs used an add-on build with exactly those two objects replaced ("new") against the same build unchanged ("old"); every run under its own
gpu-holdticket.The failing case (Flash-Next UD-IQ3_XXS,
-c 19456 -np 1, one 18,782-token request, mask chain on the device;~/lb/aval/clhrxkern-1925-fix2-20261111T055051Z):unsupported HRX nodeA model outside the sparse path (Qwen3.5-4B Q4_K_M, same layer type), because the walk changes for every graph that contains a cast:
Decode does not move. Prefill is within the spread of the two old arms.
Host:
tests/test-hrx-gdn-passed-alias.cpp(7 cases, fails before the change with the model's two messages),hrx-backend-testhost 66 passed, 0 failed.Not shown
That the answer at 18.8k is the same with the mask chain on the device as on the CPU. Three of four long requests in these runs ended in all-NaN logits on the first sampled token, on the old library and the new, mask chain on or off. That is #1536, which now gates #679's 18.8k row in place of this issue.
Checks
The fork branch is one commit further (
b6f65a273, another lane's); this PR pins the commit that was measured.🤖 Generated with Claude Code