65 commits since v0.8.0. Two perf clusters wrap up. All additive
or non-breaking refactors; no API breaks.
ADR-029 — new perf cluster:
- iter-6 (7acd4d4): port kernel_mul_mv_id_q8_0_f32_nr2 (NR0=2, NSG=4)
- iter-20 (47139aa): F16-V option for flash_attn_vec_hybrid (FC 51)
- iter-21 (391c1bb): HF2Q_DISABLE_TENSOR_MM env probe
- iter-23 (6256acb): port peer's 64×128 tensor mm-kernel (direct-B-read)
- iter-26 (07f75ea): default-flip V2 large-tile tensor mm-kernel
- iter-28-29 (90c5691, 1ae8428, a459ee0): whole-tensor dequant-to-F16
kernel + dispatcher, MSL fixes, Q6_K coherence restoration
- iter-30 (779aad4): V2-tile F16-input mm kernel — +5.8% prefill
- iter-36 (051ea1c): F16-shadow variant of perm021 mm kernel
- iter-39 (7e05ad7): async commit_with_fusion variant (new API)
- iter-47 (f207fc8): unroll-factor sweep — unroll(4) stays
- iter-48 (e659f9d): float4-vectorize O rescale loop in FA_GL kernel
- iter-50 (9823f52): bfloat2-vectorize mask load in FA_GL kernel
- iter-61 (42a807b): FOR_UNROLL on V2 dense mm-tensor A-staging loops
- iter-80 (16e4946): V2 large-tile dense bf16 — kept opt-in
- iter-93 (5133971): float4-vectorized scale_mask_softmax
- iter-125-126 (c8e8636, f8d3c51): verbatim peer kernel port
(flash_attn_vec_peer_port_f16) + cleanup
- iter-134-136 (b22eb8c, f56cb82, 5050b0b): peer reduce kernel
+ NWG=32 vec kernel variant + reduce dispatcher
- iter-162 H93 (9ad0e31, a21e504): peer-port FC-promotion for matvec
int-divisors — +0.9-1.3% multi-regime
ADR-028 wrap-up:
- iter-349 (4d92a73): flash_attn_vec_hybrid F16-K + TQ-HB-V SDPA
(Phase 10d)
- iter-351 (07afccd): kv_quantize_v_no_fwht kernel for hybrid path
- iter-354 (1ee2a24): fused F16-K + V-no-FWHT kernel
(kv_copy_kf16_quantize_v_no_fwht)
- iter-362 (bfc5d9c): fused_post_ff_norm2_endlayer_f32_v2 default-on
- iter-363 (9bb29cc): fused_moe_routing_f32_v2 default-on
- iter-367 (8c975d8): fused_moe_wsum_post_ff_norm2_endlayer_f32_v2
- iter-368 (0966bf9): q8_0 mv NSG=4 NR=2 peer-style variant
- iter-370 (3f2c198): fused_post_attn_triple_norm_f32_v2
- iter-376 (4705828): threadGroupSizeIsMultiple hint env-flag
- iter-380-381 (c9d31c8, 7e1a892): persistent encoder_worker
scaffolding + Metal-dispatch integration tests
- iter-384-388 (35f132e, ea7c54f, efe72c8): refactor cascade
output: &mut MlxBuffer → &MlxBuffer across quantized_matmul_ggml,
12 ops modules, and 3 graph wrappers — non-breaking via Rust
reborrow coercion
- iter-401-406 (6bd8842, 3a5b0ea, 0dbe837, a0ddf9d): short-indexing
refactors for q6_K/q5_K/q4_K mv kernels matching peer pattern
- iter-485 (44d9c08, 459afd2): fused TQ-HB reduce and 4-bit K+V TQ
encoder — dormant, parity-clean, perf falsified
Hygiene / fixes:
- 3b99308: gitignore local agent state (.swarm/, ruvector.db)
- 9c1d8f3: remove accidental .bak from previous bench edit
- 5ca5f5e (iter-405): q4_0_id tolerance 0.0 → 1e-5 fixes 3 false-
negative tests
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>