BC-250 (gfx1013/RDNA1, RADV, no cooperative matrices or accelerated integer dot) results for two additional PQ2_0 optimizations, separate from the dedicated mat-vec change.
Packed FP16 prefill. Pairing rows for v_pk_fma_f16 preserves the tested scalar accumulation order. On the 27B PQ2_0 model, llama-bench pp512 improved from 142.94 to 187.78 t/s and pp2048 from 140.97 to 184.70 t/s. Live-server 7k prefill improved from about 129 to 165 t/s. An initial packing layout changed rounding too much against our deployed reference and was rejected. The retained row-pair layout passed the reference-comparison gates. These results apply to this non-coopmat RDNA1 path, not a general recommendation for modern GPUs.
GATED_DELTA_NET + state-copy fusion. Writing the state directly into the strided state-cache destination removes 48 copy dispatches per token. The matcher checks the state-tail source view, destination format/alignment/strides, snapshot count, and aliasing. Only exact elementwise aliasing of the copy destination is exempted from the overlap guard. Added tests cover K=1, snapshots, decode with retained snapshots, partial slots and strided caches.
Live-server matched A/B, using the packed-FP16 build as A and adding fusion for B (same 27B PQ2_0+MTP model, ctx102400 shared across two slots, K q8_0 / V q4_1, batch2048/ubatch512, checkpoint1, nmax5/pmin0.5):
| metric |
A1 |
B1 |
A2 |
B2 |
| fixed-length generation, tokens/s |
27.90 |
28.96 |
28.03 |
29.13 |
| thinking enabled, tokens/s |
31.57 |
33.19 |
31.82 |
33.09 |
| 7k prefill, tokens/s |
165.2 |
166.0 |
165.4 |
166.0 |
| two-stream aggregate, tokens/s |
28.19 |
28.28 |
26.99 |
28.55 |
| two real requests, total seconds |
110.74 |
111.75 |
110.54 |
108.20 |
Generation gains reproduced at about 4%; real-request wall time is effectively flat across the two pairs. MTP can change output length even with fixed seeds, so real-request elapsed times should not be read as a controlled kernel-speed measure.
Correctness for the deployed integrated build: backend-ops 17496/17499, with the same three pre-existing raw_gates=1 GDN failures; six new state-copy tests pass. Korean and English/code KL top-1 agreement with the prior deployed reference was 100%. This is reference agreement, not proof of model quality. English long-context and semantic correctness of the real-request responses were not evaluated.
An earlier packed-FP16 B1 result (13.42 t/s median) was contaminated by an automated request arriving during the measurement. B1 began at 08:44:47; its first sample was 29.67 t/s. The scheduled request ran from about 08:45:02 to 08:46:04, overlapping the remaining four samples (15.72, 12.99, 13.42 and 12.63 t/s). That result is excluded from isolated-throughput comparisons. The benchmark checks for idle slots only at startup, so a later request can still contaminate a run.
These changes are deployed locally. Is there interest in reviewing the packed-FP16 path or state-copy fusion separately? AI assistance was used for implementation, review, testing and this report (Devin SWE-2 max and Codex; earlier operational work also used GLM Flash; independent review by Muse max and GLM-5.3 max).
BC-250 (gfx1013/RDNA1, RADV, no cooperative matrices or accelerated integer dot) results for two additional PQ2_0 optimizations, separate from the dedicated mat-vec change.
Packed FP16 prefill. Pairing rows for
v_pk_fma_f16preserves the tested scalar accumulation order. On the 27B PQ2_0 model, llama-bench pp512 improved from 142.94 to 187.78 t/s and pp2048 from 140.97 to 184.70 t/s. Live-server 7k prefill improved from about 129 to 165 t/s. An initial packing layout changed rounding too much against our deployed reference and was rejected. The retained row-pair layout passed the reference-comparison gates. These results apply to this non-coopmat RDNA1 path, not a general recommendation for modern GPUs.GATED_DELTA_NET + state-copy fusion. Writing the state directly into the strided state-cache destination removes 48 copy dispatches per token. The matcher checks the state-tail source view, destination format/alignment/strides, snapshot count, and aliasing. Only exact elementwise aliasing of the copy destination is exempted from the overlap guard. Added tests cover K=1, snapshots, decode with retained snapshots, partial slots and strided caches.
Live-server matched A/B, using the packed-FP16 build as A and adding fusion for B (same 27B PQ2_0+MTP model, ctx102400 shared across two slots, K q8_0 / V q4_1, batch2048/ubatch512, checkpoint1, nmax5/pmin0.5):
Generation gains reproduced at about 4%; real-request wall time is effectively flat across the two pairs. MTP can change output length even with fixed seeds, so real-request elapsed times should not be read as a controlled kernel-speed measure.
Correctness for the deployed integrated build: backend-ops 17496/17499, with the same three pre-existing raw_gates=1 GDN failures; six new state-copy tests pass. Korean and English/code KL top-1 agreement with the prior deployed reference was 100%. This is reference agreement, not proof of model quality. English long-context and semantic correctness of the real-request responses were not evaluated.
An earlier packed-FP16 B1 result (13.42 t/s median) was contaminated by an automated request arriving during the measurement. B1 began at 08:44:47; its first sample was 29.67 t/s. The scheduled request ran from about 08:45:02 to 08:46:04, overlapping the remaining four samples (15.72, 12.99, 13.42 and 12.63 t/s). That result is excluded from isolated-throughput comparisons. The benchmark checks for idle slots only at startup, so a later request can still contaminate a run.
These changes are deployed locally. Is there interest in reviewing the packed-FP16 path or state-copy fusion separately? AI assistance was used for implementation, review, testing and this report (Devin SWE-2 max and Codex; earlier operational work also used GLM Flash; independent review by Muse max and GLM-5.3 max).