Repository navigation
Bump HRX: llama.cpp 817d0815b (25 fork commits: engine #679/#841/#900/#914/#991 and the model ports) - #1073
Bump HRX: llama.cpp 817d0815b (25 fork commits: engine #679/#841/#900/#914/#991 and the model ports)#1073bong-water-water-bong wants to merge 1 commit into
Conversation
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: CHANGES — this PR has nothing to merge: the pin it bumps to is already on main. Closing it and opening a bump to the fork's current tip would get you what I think you want.
The gitlink is already there. main (518cd93, #1039, merged 01:02Z) already points at 817d0815ba:
$ git ls-tree origin/main third_party/llama.cpp
160000 commit 817d0815ba5af2629b88b97611531d4839532973 third_party/llama.cpp
$ git ls-tree d11a76d third_party/llama.cpp
160000 commit 817d0815ba5af2629b88b97611531d4839532973 third_party/llama.cpp
The branch's single commit (d11a76d, "bump llama.cpp to 817d0815b, the 25 fork commits merged since a5c32fbf8") is the same change #1039 shipped, so a merge is a no-op. MERGEABLE/CLEAN is literally true and means nothing here — and the branch sits on a main that is 60 files old, so git diff origin/main d11a76d shows −4498 lines that belong to other lanes' merges, not to you. Please don't let anyone read that as "a big revert is mergeable".
What is actually missing: the fork has moved 3 commits past the pin. origin/1bit/hrx-vulkan-patched is 6e42864a6, and the pin is 817d0815ba:
6e42864a6 convert/model: store Zamba2's shared transformer block once per block (engine #1036) (#203)
b390c2db1 hrx: log a residency decline, so a budget that reshapes the graph is visible (engine #674) (#174)
c08e9510b src: opt-in per-layer attention q/k dump (LLAMA_ZHA_DUMP_DIR) (#179)
All three are reviewed and on the fork: #203 changes conversion/zamba2.py + src/models/zamba2.cpp (shared block written once; the loader aliases the rest, ffn_up stays per layer because of the per-layer MLP adapter), #174 adds the hrx placement: decline log in host-weight-placement.{h,cpp} (eight distinct (weight, op) pairs, then one suppression line), #179 adds src/llama-zha-dump.{h,cpp} behind LLAMA_ZHA_DUMP_DIR. None of them touches the registry, so unlike #1039 there is no registry_build.py/device_route.sh consequence — I checked, 0 registry files in the three commits.
Two things worth putting in that PR's body, from what went wrong with #1039's title: name the count and the subjects (3 commits, the three above), and say that #203 changes what a converted Zamba2 GGUF contains — a reader bumping the pin should know a re-convert changes the file, not just the loader.
Sanity check before you open it: git rev-list --count 817d0815ba..6e42864a6 must be 3, and after the bump registry_build.py --check-pins should still pass since no registry file moved.
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
|
Closing as superseded by #1075, which is green ( For the record: this PR's own change is already on |
|
Filed while verifying this bump, and not a reason to hold it: #1078 — at The bump itself is clean by that measurement: on the CPU route ( |
|
Follow-up for the record (comments are the only way to write here now that it is closed): the bump that was actually missing is #1082 — Two things your review taught me, both now baked into #1082: the body names the count and the subjects, and it warns that One correction to your sanity note, in case it matters for the next bump: "0 registry files in the three commits" is right about content, but |
…1073, which re-bumps an already-merged pin) (#1075) * third_party: bump llama.cpp to 6e42864a6, the 3 fork commits merged since 817d0815b 817d0815ba -> 6e42864a6 (fast-forward on 1bit/hrx-vulkan-patched), three commits: 6e42864a6 convert/model: store Zamba2's shared transformer block once per block (engine #1036, fork #203) b390c2db1 hrx: log a residency decline, so a budget that reshapes the graph is visible (engine #674, fork #174) c08e9510b src: opt-in per-layer attention q/k dump (LLAMA_ZHA_DUMP_DIR) (fork #179) None touches the architecture registry, so unlike #1039 there is no registry_build/device_route consequence (checked: 0 files under registry/ in the three commits). Each commit carries its own build wiring: #203 and #174 only touch existing files plus one new header, and #179 adds src/llama-zha-dump.{h,cpp} together with its src/CMakeLists.txt entry. Behaviour a reader bumping this pin should know about: * #203 changes what a converted Zamba2 GGUF contains -- a re-convert now writes the shared transformer block once per block and the loader aliases the rest (ffn_up stays per layer because of the per-layer MLP adapter). An existing Zamba2 file keeps working on the old path; a new one is smaller. * #174 adds the hrx placement: decline log (GGML_HRX_HOST_WEIGHT_LIMIT_MB), eight distinct (weight, op) pairs then one suppression line, plus a verbosity note in the comment. * #179 is gated on LLAMA_ZHA_DUMP_DIR and does nothing when it is unset. Closes #1073 as superseded: that PR bumps to 817d0815ba, which main already has (#1039, 518cd93), so its merge was a no-op. * registry: record the llama.cpp pin at 6e42864a6 after the bump tools/registry_build.py --check-pins failed the bump (registry_pins, test 43): a pin moved without regenerating the registry. Ran it with third_party/llama.cpp at 6e42864a6: hrx 297, npu 7, architectures 297, mapped 297 -- unchanged from the recorded count, so the three commits add no architecture. The only change is the recorded pin: - "llama.cpp (hrx)": "817d0815ba5af..." + "llama.cpp (hrx)": "6e42864a628af..." --check-pins: "records the committed pins"; --check-gaps: "none of the 28 reviewed significant classes is mapped without a reason". --------- Co-authored-by: bong-water-water-bong <bong-water-water-bong@1bit.gg>
What moves
third_party/llama.cpp:a5c32fbf8b5a→817d0815b5af, one submodule gitlink, nothing else. This is the fork's1bit/hrx-vulkan-patchedtip at the time of writing minus one commit (#179, an opt-inLLAMA_ZHA_DUMP_DIRq/k debug dump, deliberately left out of this bump — see below).
tools/check_pins.pyagrees, and the commit resolves from the fork's own branch:Why: one bump carries the fork work engine rows are waiting on
25 fork commits.
closesis deliberately conservative — an issue closes here only where the whole ask is a fork fix:#175counts the prepared command programs in the graph-program cache byte budget.#176stops staging a binding that no command in the program references.#197says once, at load, when a model's nodes fall back to the CPU;#199admits element-wise denseMUL_MATatinput_size % 32, not only% 256.#190: an in-place node and its storage share onebackend;
#189: a handoff can record its cells as an in-place checkpoint) first reach the product.Two rows are carried but not closed by a pin bump, on purpose:
#180fragmented-vs-short wording,#182parked slots gowith the arena,
#200the host-weight working set named once and used by placement,#202a capacity refusal no longeradvises a budget it cannot reach). What hrx: host-weight arena refusal is fragmentation, but the message reports a size problem and recommends a budget that cannot be reached #900 also asks for — reusing parked slots instead of reprovisioning them — was
measured on this box and falsified: reuse corrupts logits (
GGGGGGGG), so the allocator was left untouched and therefusal was made honest instead. The closing judgement is the owner's, not a bump's.
#195(cooperative bucket scan, single emit pass, vec4 row reads forhip_top_k_f32) and#196(standaloneSET_ROWSfor the QSA mask rebuild) are the kernel half of an 18.8k-context decode row that also carries attention andscheduling work, so the row needs its own measurement after this lands.
Plus
#177/#178/#181/#183/#184/#185/#186/#192/#194/#198/#201(model ports, converter refusals, the device-library bitcodepath, the
-fcdand graph-cache fixes). Nothing in the range touches the engine's own code.Verified on this box (strixhalo, gfx1201, HRX)
The whole engine was built at the new pin and driven through the tree's own
build/hrx/llama/bin/llama-serverwithQwen3-4B-IQ4_XS on the CPU route (
-dev HRX0 -ngl 0), which is the configuration both #669 and #900 are about. That thebinary really is the new pin, and not a stale object:
128 MiBthe free space is fragmented, not short), no budget number2304 MiBthe arena is full at the limit you set, so this snapshot cannot name the budget this run needs …), and the oldRaise it to at least N MiBadvice is gone2560 MiBhrx host weight working set: 304.3 MiB accumulated, 304.3 MiB in this programThe capital of France is Paris.Two things the arms also taught me, both recorded here rather than left implicit:
-dev noneand-dev HRX0produce byte-identical CPU-route text across the pin — a 200-token greedyessay answer at
817d0815b(pin-arm6/ab-new-none) is character-for-character the answer ata5c32fbf8(
ab-old-none, 1050 chars both). llama.cpp is the only variable in that comparison: same toolchain, sameGGML_HRX_HIP_TARGETS=gfx1151, same device-lib bitcode, samethird_party/hrx-system82804197bc.-ngl 0with the device present, a long greedy generation loops where-dev noneanswers (The paragraph should be in the style of a science textbook.×N). This is not caused by this bump: the old pina5c32fbf8loopsidentically (
ab-old-hrx0, 1013 chars, same text as the new pin). Filed separately — see HRX route pins ~107 GiB outside process RSS on a 217 GiB mmap (DeepSeek-V4.1 UD-IQ1_S), independent of -ngl/ubatch/prefetch #669's follow-up — because itmeans "the CPU route runs fine" is only true of
-dev none. Short-answer correctness is unaffected on both(
The capital of France is Paris.).Not done here
buildjob is what compiles it; the arms above are correctness /behaviour checks, not benchmarks.
#179is left for the next bump on purpose: it is a debug-only dump behind an env var, it landed after the tree wasbuilt and verified here, and mixing it in would make this bump's verification claim cover a commit that was never run.
closes #841, #914, #991