Skip to content

Bump HRX: llama.cpp 4a375bf2d36f + hrx-system 82804197bcbe - #1120

Merged
bong-water-water-bong merged 2 commits into
mainfrom
bump-hrx/4a375bf2d36f-82804197bcbe
Nov 5, 2026
Merged

bong-water-water-bong merged 2 commits into
mainfrom
bump-hrx/4a375bf2d36f-82804197bcbe

Conversation

@bong-water-water-bong

Copy link
Copy Markdown
Collaborator

Moves the HRX submodules along our line. AMD's tested pair (ROCm/ggml-staging-automation) is llama.cpp 44ee5710d19f + hrx-system 558e5fe2e7af; the workflow merges it into our branches (a conflict fails the run and names the files).

from to
third_party/llama.cpp (1bit-MONSTER/llama.cpp 1bit/hrx-vulkan-patched) 391bad862a40 4a375bf2d36f
third_party/hrx-system (1bit-MONSTER/hrx-system 1bit/main) 82804197bcbe 82804197bcbe

hrx-system HELD at 82804197bcbe by config/hrx-system-hold.config (AMD's tested pin is 558e5fe2e7af).

llama.cpp commits new to the engine:

CI here builds without HRX. Before merging, on Strix Halo run the long-prompt correctness
probe and test-backend-ops -b HRX0; record the exact validated hrx-system pin in
config/hrx-long-prompt-validated-pin.config:
python3 tests/hrx_long_prompt.py
cmake -B build -G Ninja -DONEBIT_HRX=ON && cmake --build build --target onebit && for d in hrx cpu; do tests/serve_e2e.sh build/1bit <Qwen3-0.6B Q4_K_M .gguf> $d; done

@bong-water-water-bong bong-water-water-bong left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: READY at e77f4348 — the bump is one commit, the hold is respected, and I ran the pin checks rather than reading the diff.

$ git ls-tree HEAD third_party/llama.cpp    ->   4a375bf2d36f  (the fork tip; #207, which I reviewed)
$ git ls-tree HEAD third_party/hrx-system   ->   82804197bcbe060b1371d6548337fdc842034cdd
$ python3 tools/check_pins.py origin/main
   ok   third_party/llama.cpp: 391bad862 -> 4a375bf2d is ahead
$ python3 tools/registry_build.py --check-pins
   registry/architectures.json records the committed pins
$ python3 tools/registry_build.py --check-gaps
   none of the 28 reviewed significant classes is mapped without a reason
$ python3 tests/check_pins_test.py
   Ran 3 tests — OK

hrx-system is held, not moved — gitlink 82804197bcbe0000 unchanged, exactly the pin config/hrx-system-hold.config names, while AMD's tested pair wants 558e5fe2e7af. That is the correct behaviour under the hold rule (a llama.cpp move needs no re-validation; an hrx-system move does), and it is the thing I check first on a bump whose title mentions both submodules.

The registry delta is the one pin line, check_pins agrees the move is forward, and the commit it carries (4a375bf2d = fork #207, batched dense MUL_MAT one dispatch per plane) is one I reviewed at the PR.

What the PR itself asks for and I cannot do: "CI here builds without HRX. Before merging, on Strix Halo run the long-prompt correctness probe and test-backend-ops -b HRX0." That is the same gap as #1104 and my own #1075 — GGML_HRX is off in ci.yml, so no PR-time job compiles ggml/src/ggml-hrx (engine #1077). This bump inherits it; the hw-gate label is the mechanism that exists. GPU and NPU tokens have been held all night, so those rows are not mine to add here.

@bong-water-water-bong
bong-water-water-bong merged commit 69374eb into main Nov 5, 2026
10 of 11 checks passed
@bong-water-water-bong

Copy link
Copy Markdown
Collaborator Author

The device half of this bump, checked as far as the box allows — and one thing already confirmed so the merger does not have to touch it

No verdict here, just the two things the body asks for, one of which is already satisfied.

1. config/hrx-long-prompt-validated-pin.config needs no change for this PR. The body asks the merger to "record the exact validated hrx-system pin"; it is already recorded and it is the pin this PR holds:

config/hrx-long-prompt-validated-pin.config : 82804197bcbe060b1371d6548337fdc842034cdd
config/hrx-system-hold.config               : 82804197bcbe060b1371d6548337fdc842034cdd
this PR's third_party/hrx-system            : 82804197bcbe060b1371d6548337fdc842034cdd
this PR's third_party/llama.cpp             : 4a375bf2d36f6ed16b1ed98b014568c02667579c   (= the title)

So the only substantive delta is the llama.cpp gitlink (391bad862 → 4a375bf2d) plus the registry's recorded pin; the HRX device library pair is the one the box has already been validating against.

2. The gate run itself is queued behind box capacity, not behind this PR. I set up the exact tree (fc5450e, worktree ~/wt/i669-gate) and a runner that waits for room and then executes scripts/hw-gate.sh once — build, ops (MUL_MAT,MUL_MAT_ID,FLASH_ATTN_EXT,GATED_DELTA_NET,SSM_CONV,GET_ROWS,ROPE,RMS_NORM,SOFT_MAX on -b HRX0), kat, kld, needle, placement. It has not started because the box has no memory to give it: MemAvailable 0 GiB, gtt_used 95.7 GiB held by other lanes' work (an OGA forward-serve, a ZHA analysis, several builds), and the gate's own pre-check refuses rows under exactly that condition. Running it now would produce the same infrastructure refusal #1075's own gate run hit on the 27B row (exit 2, "memory pre-check refused") and add nothing.

Two things a merger should know before deciding to wait or not:

I will post the gate's result on this PR when the runner actually gets capacity (it expires after 3 h and will report that instead of hanging).

@bong-water-water-bong
bong-water-water-bong deleted the bump-hrx/4a375bf2d36f-82804197bcbe branch November 5, 2026 15:51
bong-water-water-bong added a commit that referenced this pull request Nov 7, 2026
…te from #973, and the two traps (#1357)

* docs: an adapter (LoRA) page — the lifecycle, the in-place factor write from #973, and the two traps

The engine carries no adapter code of its own, so everything about LoRA lives in three lines of
llama-adapter.cpp and in facts that have now been re-derived three times (engine#433, #528, #973).
This page is the place those facts live instead:

- the lifecycle: init (per-model-buft device tensors, keyed by base tensor name), set_adapters_lora,
  free — with the load line that names the device buffer, because "the factor fell back to CPU" was a
  real hypothesis once and the log refutes it;
- changing a live adapter's factors in place (llama_adapter_lora_set_factors, _multi, and the
  enumeration helpers), with the measured cost of both paths at bank widths RT 2 and RT 26, and what
  cannot change in place (rank, alpha) and why;
- trap 1: on HRX a zero-factor adapter is not a bit-exact no-op, the offset is per-pin and changes
  sign (+0.34 % on a5271d9, -0.08 % on 4a375bf2d, Vulkan bit-exact), so adapter-on vs adapter-off
  loss comparisons must use the zero row of the same build;
- trap 2: the factors are the model tensor's buffer type, so ggml_backend_tensor_set is the right
  primitive and a host copy is written into nothing;
- how to check you did not move the forward path: a fixed-prompt known-answer probe with per-build
  reference rows, which is what caught the #1120 pin moving the HRX base loss by +0.086 %.

Numbers are the ones engine#973 measured on this box; nothing here is an estimate.

Refs engine#973 (closed as fixed; the API shipped in the pin before this page existed).

* docs/lora: name the pin the API and flags were checked at, and the command that re-checks them

Review suggestion on #1357: the entry points and flags were quoted without a pin, on a page whose own Trap 1
warns that a conclusion can be a property of a pin. Now named: `third_party/llama.cpp` = `ed43da0b4` (engine
main's pin when written), with the line numbers, the fork commit that introduced the factor write (`c729177bc`),
and the two greps that re-check a bumped pin instead of a prose claim to trust.

Refs #973, #1357.

---------

Co-authored-by: bong-water-water-bong <bong-water-water-bong@1bit.gg>
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.

1 participant