Skip to content

feat(KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT): port IQ4_XS/IQ3_XXS to ROCm - #3029

Open
joral wants to merge 12 commits into
mudler:mainfrom
joral:row/KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT-w1
Open

feat(KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT): port IQ4_XS/IQ3_XXS to ROCm#3029
joral wants to merge 12 commits into
mudler:mainfrom
joral:row/KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT-w1

Conversation

@joral

@joral joral commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Row: KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT.
Closes #3067. #1940 remains open for the owed formats.

Issue #1940 says src/vt/rocm/ ports zero I-quant formats, so an IQ4_XS or
IQ3_XXS tensor still expands to bf16 on a ROCm keep-quant load instead of
staying compressed. This lands DotIQ4XS and DotIQ3XXS in
rocm_grouped_gemm.hip, adapted from the existing CUDA bodies rather than
freshly ported, on both the plain and grouped/MoE arms, and admits both
dtypes in DeviceKeepQuantSupported's ROCm case. Spec:
.agents/specs/kernel-quant-ciq-gemm-rocm-iquant.md (#2996, merged).

The spec's one named correctness risk is resolved by measurement, not
assumption: CUDA's DotIQ4XS needed non-fused float intrinsics to stay
bit-exact against the oracle, because nvcc's project-wide -ffp-contract=off
never reaches .cu files. HIP already compiles with that flag project-wide,
and a new bit-exact gate over the same real-checkpoint bytes and the same
oracle bits the CUDA gate uses confirms plain arithmetic is sufficient on
this toolchain, so the port carries no workaround CUDA needed.

The contributor reports an end-to-end reload of
the real motivating checkpoint, Nail-Qwen3.6-35B-A3B-MTP-IQ4_XS.gguf
(19.39 GB). It loads, generates coherent tokens, and its calculated weight footprint
(19,333,564,672 bytes, about 18.01 GiB) approximates the on-disk size instead of the ~70 GiB a bf16
expansion would produce — the fix for the host-RAM SIGSEGV this checkpoint
hit on ROCm before this row.

Contributor evidence on the original head, not operator reproduction:
gated on isravale (RX 9060 XT, gfx1200, ROCm 7.2.3) under the GPU file
mutex: test_backend_cross_device 41/42 (the one failure, MoeSiluMul, is
the pre-existing, already-tracked #1954 flake — confirmed unrelated);
test_gguf_keep_quant 52/52; test_gguf_device_fit/test_gguf_device_fit_reach
green; every other ROCm suite green with zero regression on the four
existing k-quant formats.

Owed, named rather than silently dropped: the ROCM-KQUANT-NWARPS-DECODE
re-measurement for these two formats (PENDING, no rocprofv3 profiling
setup staged on this box yet — does not block this row, whose own scope is
coverage and correctness); a WMMA/tensor-core tile for these two formats
(follow-on row KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT-RDNA4, spec drafted,
depends on this PR merging first); the other six formats named in the same
ROCm refusal message (Q4_0/Q2_K/Q3_K/IQ2_XXS/IQ2_S/MXFP4, tracked by #1940).

Maintainer integration and device verification

Candidate 8a7cda269a7254dc849f6401a990c5f2bae98e36 preserves the
contributor history and reconciles it with main 08a34c3a. It preserves
Tenstorrent admission, K-quant tail arguments, and both independent device
test blocks. A loader test now exercises IQ3_XXS matrix and expert admission
through RouteGgufTensor.

The repair for #3067 compares all four complete device codebooks against
their CPU tables. Static extent checks prevent a partial copy from appearing
complete. No quantization values, arithmetic, or dispatch policy changed.

The operator ran the repaired head under lease
886172b3-9d21-4435-a9db-cbf7b2f5dfb6 on strix:gpu0, gfx1151,
ROCm 7.2.4. All four CTest targets passed:
test_backend_cross_device, test_gguf_keep_quant,
test_gguf_device_fit, and test_gguf_device_fit_reach.
The focused dot and dispatch tests passed 61 assertions. The complete
codebook comparison passed nine assertions.

All eleven independent review mutations failed their intended tests:
six dispatch/codebook/scale mutations and five complete-table-seal mutations.
Every restored source rebuilt and passed its focused tests; zero mutations
survived. The operator also reran the three CPU loader/device-fit suites.
Full host preflight exited 0 with no failed gates, 4/4 changed host translation
units passing, and five disclosed architecture/classification skips.
Explicit path classification, style, and trailer checks supplement that run.

Remaining acceptance gates

The required real-model reload has not been reproduced on the repaired head.
The exact Nail GGUF lacks a recorded repository revision or SHA256 and an
accessible operator location. The contributor's private path is not an
operator-resolved artifact. The checkpoint binding has been requested.

The historical weight-footprint calculation is not measured peak RSS.
Coherent text alone is not a token-ID oracle comparison. Artifact identity,
production reload, token correctness and memory evidence remain pending;
the operator does not claim model acceptance or a speed result from the
four-target device gate. Wider ROCm regression checks and integration with
any newer main also remain to be completed before merge.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
Assisted-by: AGENT:gpt-6 [codex]

joral added a commit to joral/vllm.cpp that referenced this pull request Sep 6, 2026
…OCm keep-quant line

The keep-quant enumeration went stale when this row's implementation
added IQ4_XS/IQ3_XXS to ROCm's DeviceKeepQuantSupported but touched no
docs file, a gap a fresh review of PR mudler#3029 found.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-sonnet-5 [Claude Code]

@localai-org-maint-bot localai-org-maint-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Updated source review at 2280069 (2026-09-09): the requested IQ3_XXS loader regression is present. It calls RouteGgufTensor for matrix and stacked-expert roles and checks keep-quant, opt-out, CPU-reference, and misaligned-width behavior. The diff also adds a snapshot of all four device codebooks and byte comparisons with the CPU tables.

Correction to my earlier documentation feedback: latest main AGENTS.md makes public-document changes depend on their stated triggers; routine code/test edits do not require STATUS/BENCHMARKS updates. That blanket requirement is withdrawn. This head updates the quantization inventory, FEATURES and USAGE.

The remaining merge gate is the real-model reload and token/memory evidence identified in the PR body, bound to an accessible artifact revision or SHA256, plus applicable current-main regression validation. The reported four-target device gate does not establish those model results. I inspected the source changes but did not independently rerun HIP or model gates in this session.

mudler added a commit to joral/vllm.cpp that referenced this pull request Sep 8, 2026
Record the mudler#3029 conflict resolution and missing IQ3_XXS loader regression before changing code. Issue mudler#1940 retains its broader format debt.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler added a commit to joral/vllm.cpp that referenced this pull request Sep 8, 2026
…ution

Merge main 415d178 into mudler#3029 while retaining IQ4_XS and IQ3_XXS admission and both target tests. Preserve Tenstorrent admission and pass the current KQuantGemmK tail arguments on every format. Keyed matrices remain byte-identical to the target. Issue mudler#1940 keeps its broader debt.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler added a commit to joral/vllm.cpp that referenced this pull request Sep 8, 2026
Direct kernel tests do not detect deleting IQ3_XXS from ROCm loader admission. Enter RouteGgufTensor for matrix and expert weights, retaining ragged-shape and switch checks. This closes the missing loader guarantee in mudler#3029 without closing the remaining formats owed by mudler#1940.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler added a commit to joral/vllm.cpp that referenced this pull request Sep 8, 2026
The contributor measured 19,333,564,672 bytes, which is about 18.01 GiB. Correct only the mislabeled conversion in mudler#3029 while preserving the raw measurement and all other evidence.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler added a commit to joral/vllm.cpp that referenced this pull request Sep 8, 2026
The operator landed mudler#3064 and selected main 08a34c3 for the final mudler#3029 integration. Record that exact target before merging it, retaining the first integration pin.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler added a commit to joral/vllm.cpp that referenced this pull request Sep 8, 2026
…aseline

Integrate main 08a34c3 into mudler#3029 after mudler#3064 restored README scanner coverage. The merge is clean and changes no I-quant implementation or test guarantees.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler added a commit that referenced this pull request Sep 9, 2026
The reconstructed provider served seven formats that the ROCm loader still expanded. Admit the exact provider set so matrix and expert weights retain their quantized blocks through the production GGUF route.

Keep IQ4_XS with #3029 and preserve expansion for every unsupported format. The loader gate checks each supported format in both production roles.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-5 [Codex]
mudler added a commit that referenced this pull request Sep 9, 2026
Closes #2781.
Closes #2927.

Row: `BACKEND-ROCM`

Merge the reconstructed ROCm keep-quant providers from external pull request
#2782 at `9fcd5d7180bcda2ca7c5aed74d154999a8f59d9e`. This no-ff merge preserves
Ghazni's authorship on the three contributor commits.

The providers serve dense and grouped GEMMs for eleven ROCm block formats.
They retain grouped Q8_0 delegation and use the established external registrar.

The reconstruction keys grow-only scratch by queue identity. It refuses cold
or growing allocations during graph capture and preserves warm replay storage.

The GGUF loader admits exactly the formats that the ROCm providers serve.
IQ4_XS remains separate work in #3029. Unsupported formats stay on the
expansion path.

Operator job `7d7fe3a1-9001-4fc3-9463-8e2854f71e33` used the exact source
archive for `9fcd5d718`. Its product tree matches the tested `791519aeb` tree.
The clean archive has SHA-256
`4771a58c553a6b5d0cd0c5332a1b604adbe90f86282d109b900dfa33afa716d7`.

The job ran on `strix:gpu0`, an AMD Radeon 8060S at `gfx1151`, with ROCm
7.2.4 and HIP 7.2.53211. A fresh HIP configure and build completed.
`test_rocm_quant_dot --no-skip` passed 5 cases and 145,327 assertions.
`test_gguf_keep_quant` passed 54 cases and 11,970 assertions.

The earlier 132,094-assertion result came from a stale binary and is not
landing evidence. A broad CTest regex selected unbuilt unrelated targets, so
this record does not use that invocation as evidence.

No gfx1100 speed result is claimed by this merge. The device result establishes
correctness only on the named board.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-5 [Codex]
@localai-org-maint-bot
localai-org-maint-bot force-pushed the row/KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT-w1 branch from 2280069 to 6841d62 Compare September 12, 2026 01:58
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
…OCm keep-quant line

The keep-quant enumeration went stale when this row's implementation
added IQ4_XS/IQ3_XXS to ROCm's DeviceKeepQuantSupported but touched no
docs file, a gap a fresh review of PR mudler#3029 found.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
Record the mudler#3029 conflict resolution and missing IQ3_XXS loader regression before changing code. Issue mudler#1940 retains its broader format debt.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
Direct kernel tests do not detect deleting IQ3_XXS from ROCm loader admission. Enter RouteGgufTensor for matrix and expert weights, retaining ragged-shape and switch checks. This closes the missing loader guarantee in mudler#3029 without closing the remaining formats owed by mudler#1940.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
The contributor measured 19,333,564,672 bytes, which is about 18.01 GiB. Correct only the mislabeled conversion in mudler#3029 while preserving the raw measurement and all other evidence.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
The operator landed mudler#3064 and selected main 08a34c3 for the final mudler#3029 integration. Record that exact target before merging it, retaining the first integration pin.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler added a commit that referenced this pull request Sep 12, 2026
IQ4_NL reaches the GGUF reader, the CPU dequantizer and the CPU keep-quant
dot, and no accelerator multiplies it. On ROCm the refusal is terminal,
because the backend is discrete and an unsupported dtype cannot fall back to a
host kernel that would follow device pointers.

This blocks a shipped artifact rather than a hypothetical one. Every published
unsloth/Qwen3.8-Flash-Next-GGUF quant stores 91,465,564,160 elements in
IQ4_NL, read from the three shard headers over HTTP range requests: the
20M-entry n-gram table and the 48 ffn_down_exps. #3097 has since made the
table readable on ROCm. The experts are still not multipliable, and that is
now the whole gap for this encoding on gfx1151.

The CUDA half is a variant and not a table entry. IQ4_NL is a 32-element block
paired with a Q8_0 activation, where the resident device GEMM quantizes
activations to Q8_K over 256-element super-blocks. cuda_quant_dot.cu already
says so: DotMXFP4 sits there marked maybe_unused, awaiting the same
Q8_0-activation GEMM variant that Q5_0 and Q4_0 also queue behind.

The row understated the tree and now says what it does. The reader arm, the
dequantizer and the CPU dot all landed under #1989 while the cell read
INVENTORIED with every stage unset.

Adds strix:gpu0 to the fleet table, which predates the box, with its memory
measured under two rc leases. hipMallocManaged there is bounded by HOST memory
rather than by the firmware carve: a bounded probe that stops at its first
failure reached 76 GiB with plain hipMalloc and 27 GiB with hipMallocManaged,
against 29.3 GiB host-available. That resolves an ambiguity #2518 could not,
because its 58.000 GiB ceiling sat below both the 64.00 GiB carve and the
62 GiB host RAM of the time and so never said which bound it hit. Raising the
carve to 96 GiB LOWERED the managed ceiling, because host RAM fell with it.

The spec records two corrections against itself rather than applying them
silently, because a scope that shrinks without a trace cannot be audited. It
first planned a ROCm gather arm and first recorded #3029 as a hard dependency.
#3097 landed both the gather and the ROCm codebook header while this was being
drafted, so the arm is struck and the dependency is downgraded to a conflict
surface.

No product code lands here, and no throughput, latency or memory number is
claimed.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5-1m [claude-code]
@localai-org-maint-bot
localai-org-maint-bot force-pushed the row/KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT-w1 branch from 16fa196 to 228bf08 Compare September 12, 2026 07:16
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
…OCm keep-quant line

The keep-quant enumeration went stale when this row's implementation
added IQ4_XS/IQ3_XXS to ROCm's DeviceKeepQuantSupported but touched no
docs file, a gap a fresh review of PR mudler#3029 found.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
Record the mudler#3029 conflict resolution and missing IQ3_XXS loader regression before changing code. Issue mudler#1940 retains its broader format debt.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
Direct kernel tests do not detect deleting IQ3_XXS from ROCm loader admission. Enter RouteGgufTensor for matrix and expert weights, retaining ragged-shape and switch checks. This closes the missing loader guarantee in mudler#3029 without closing the remaining formats owed by mudler#1940.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
The contributor measured 19,333,564,672 bytes, which is about 18.01 GiB. Correct only the mislabeled conversion in mudler#3029 while preserving the raw measurement and all other evidence.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
localai-org-maint-bot pushed a commit to joral/vllm.cpp that referenced this pull request Sep 12, 2026
The operator landed mudler#3064 and selected main 08a34c3 for the final mudler#3029 integration. Record that exact target before merging it, retaining the first integration pin.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler added a commit that referenced this pull request Sep 12, 2026
IQ4_NL reaches the GGUF reader, the CPU dequantizer and the CPU keep-quant
dot, and no accelerator multiplies it. On ROCm the refusal is terminal,
because the backend is discrete and an unsupported dtype cannot fall back to a
host kernel that would follow device pointers.

This blocks a shipped artifact rather than a hypothetical one. Every published
unsloth/Qwen3.8-Flash-Next-GGUF quant stores 91,465,564,160 elements in
IQ4_NL, read from the three shard headers over HTTP range requests: the
20M-entry n-gram table and the 48 ffn_down_exps. #3097 has since made the
table readable on ROCm. The experts are still not multipliable, and that is
now the whole gap for this encoding on gfx1151.

The CUDA half is a variant and not a table entry. IQ4_NL is a 32-element block
paired with a Q8_0 activation, where the resident device GEMM quantizes
activations to Q8_K over 256-element super-blocks. cuda_quant_dot.cu already
says so: DotMXFP4 sits there marked maybe_unused, awaiting the same
Q8_0-activation GEMM variant that Q5_0 and Q4_0 also queue behind.

The row understated the tree and now says what it does. The reader arm, the
dequantizer and the CPU dot all landed under #1989 while the cell read
INVENTORIED with every stage unset.

Adds strix:gpu0 to the fleet table, which predates the box, with its memory
measured under two rc leases. hipMallocManaged there is bounded by HOST memory
rather than by the firmware carve: a bounded probe that stops at its first
failure reached 76 GiB with plain hipMalloc and 27 GiB with hipMallocManaged,
against 29.3 GiB host-available. That resolves an ambiguity #2518 could not,
because its 58.000 GiB ceiling sat below both the 64.00 GiB carve and the
62 GiB host RAM of the time and so never said which bound it hit. Raising the
carve to 96 GiB LOWERED the managed ceiling, because host RAM fell with it.

The spec records two corrections against itself rather than applying them
silently, because a scope that shrinks without a trace cannot be audited. It
first planned a ROCm gather arm and first recorded #3029 as a hard dependency.
#3097 landed both the gather and the ROCm codebook header while this was being
drafted, so the arm is struck and the dependency is downgraded to a conflict
surface.

No product code lands here, and no throughput, latency or memory number is
claimed.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5-1m [claude-code]
joral and others added 3 commits September 12, 2026 08:06
Issue mudler#1940 says src/vt/rocm/ ports zero I-quant formats, so IQ4_XS and
IQ3_XXS still expand to bf16 on a ROCm keep-quant load instead of staying
compressed. This lands DotIQ4XS and DotIQ3XXS in rocm_grouped_gemm.hip,
adapted from the existing CUDA bodies rather than freshly ported, on both
the plain and grouped/MoE arms, and admits both dtypes in
DeviceKeepQuantSupported's ROCm case.

The spec's FMA-contraction risk is resolved by measurement, not
assumption. CUDA's DotIQ4XS needed non-fused float intrinsics to stay
bit-exact against the oracle, because nvcc's project-wide flag never
reaches .cu files. HIP already compiles with -ffp-contract=off
project-wide, and a new bit-exact gate over the same real checkpoint
bytes and the same oracle bits CUDA's gate uses confirms plain
arithmetic is sufficient on this toolchain, so the port carries no
workaround CUDA needed.

Three existing tests asserted the prior ROCm behavior by name and go red
under the new routing, each for the reason it should: the cross-device
table gains both dtypes and a new bit-exact case, the keep-quant loader's
exhaustive per-device count moves from 8 to 10, and a residency pin that
named issue mudler#1940 splits per-tensor now that one of its two towers keeps.

Run on isravale (RX 9060 XT, gfx1200, ROCm 7.2.3) under the GPU file
mutex: test_backend_cross_device 41/42 (the one failure, MoeSiluMul, is
confirmed pre-existing and unrelated via an independent binary built from
the sibling KERNEL-QUANT-CIQ-GEMM-ROCM-RDNA4-w1 worktree reproducing the
identical mismatch); test_gguf_keep_quant 52/52; test_gguf_device_fit
24/24; every other ROCm suite green with zero regression.

The row's actual acceptance criterion also landed: an end-to-end reload
of the real motivating checkpoint, Nail-Qwen3.6-35B-A3B-MTP-IQ4_XS.gguf
(19.39 GB, on isravale). Its own header histogram is IQ4_XS/Q5_K/Q6_K
only, so it exercises exactly the dtypes this change adds plus the two
already supported. It loads, generates coherent tokens, and its resident
footprint (~19.33 GiB) matches the on-disk size instead of the ~70 GiB a
bf16 expansion would produce -- the fix for the host-RAM SIGSEGV this
checkpoint hit before this row, on the artifact that motivated it.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
…OCm keep-quant line

The keep-quant enumeration went stale when this row's implementation
added IQ4_XS/IQ3_XXS to ROCm's DeviceKeepQuantSupported but touched no
docs file, a gap a fresh review of PR mudler#3029 found.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-sonnet-5 [Claude Code]
Record the mudler#3029 conflict resolution and missing IQ3_XXS loader regression before changing code. Issue mudler#1940 retains its broader format debt.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
mudler and others added 9 commits September 12, 2026 08:06
Direct kernel tests do not detect deleting IQ3_XXS from ROCm loader admission. Enter RouteGgufTensor for matrix and expert weights, retaining ragged-shape and switch checks. This closes the missing loader guarantee in mudler#3029 without closing the remaining formats owed by mudler#1940.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
The contributor measured 19,333,564,672 bytes, which is about 18.01 GiB. Correct only the mislabeled conversion in mudler#3029 while preserving the raw measurement and all other evidence.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
The operator landed mudler#3064 and selected main 08a34c3 for the final mudler#3029 integration. Record that exact target before merging it, retaining the first integration pin.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GPT-6 [Codex]
The existing spec requires a device-byte seal, but the contribution only checks numerical samples. Define the missing gate for mudler#3067.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Codex:GPT-5 [API]
Compare every byte of all four device tables, including their extents. The snapshot implementation is still missing at this test-first step (mudler#3067).

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Codex:GPT-5 [API]
Copy each executing device symbol into the complete host snapshot for mudler#3067. Preserve table values and quantized dispatch.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Codex:GPT-5 [API]
…Q3_XXS coverage

A maintainer review found that this branch changes which GGUF formats a ROCm
keep-quant load admits while updating no public document and no owning
inventory row. The tree carried the capability and no record of it, so a reader
asking whether ROCm keeps an IQ4_XS weight compressed had to read the admission
switch to find out.

The reviewer named `docs/STATUS.md` and `docs/BENCHMARKS.md`. This repository
has no `docs/STATUS.md`, and AGENTS.md ties `docs/BENCHMARKS.md` to a benchmark
identifier being added, removed, or changing disposition, which this change
does not touch. The surface AGENTS.md ties to a quantization surface changing
is `docs/FEATURES.md`, and the owning inventory rows are `QUANT-GGUF-IQ4_XS`
and `QUANT-GGUF-IQ3_XXS` in `.agents/quantization-matrix.md`.
`.agents/kernel-matrix.md` tracks no row for this work and is not an owning
surface here.

The two device gates are recorded separately because they measured different
things. The contributor gate on `gfx1200` covers this landing. The later
operator gate on `gfx1151` covers the device-table seal, which is a different
scope. Neither reloads the real checkpoint on the repaired head, and the rows
say so rather than rounding a historical weight-footprint calculation up to a
measured peak RSS. The owed `ROCM-KQUANT-NWARPS-DECODE` re-measurement and the
follow-on WMMA row are named rather than dropped.

The `R`/`M`/`C`/`E`/`P` columns do not move. `C` already read `Y` from the CPU
and CUDA arms, and it says only that native quantized compute is dispatched,
without naming a backend.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
…te reproduction

The row's prior device-gate evidence was contributor-reported on an
earlier head. Record the operator's independent rerun of the exact
same four targets on isravale at the current head (fa39a45), so the
row states what the operator itself verified rather than only what
was reported to it.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
Claude-Session: https://claude.ai/code/session_01DmM255tHzVaY9VYum3qxLE
… before the IQ4_XS block

The new IQ4_XS oracle-dot test cases were inserted inside the "fused MoE
gate+up+SwiGLU grouped GEMM" TEST_CASE body, before its closing brace,
so the file never compiled: every TEST_CASE after line 4108 was parsed
as a nested function definition inside the outer one.  Add the missing
"}" that closes the fused-MoE case before the IQ4_XS comment block.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:regolo/glm5.2 [maki]
@localai-org-maint-bot
localai-org-maint-bot force-pushed the row/KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT-w1 branch from 228bf08 to 3b5a7e7 Compare September 12, 2026 08:08
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.

test(KERNEL-QUANT-CIQ-GEMM-ROCM-IQUANT): seal every device table entry

3 participants