absorb_q

Function absorb_q 

Source
pub fn absorb_q(
    cfg: &Glm5NextDsaConfig,
    q_b: &[f32],
    kv_b: &[f32],
    full_heads: usize,
) -> Result<Vec<f32>>
Expand description

2026-09-25: q_absorb[h*kvl + c][k] = Σ_r kv_b[h*(nope+vd) + r][c] · q_b[h*nope + r][k] over all full_heads heads, computed on the host.

q_b_proj has qk_head_dim rows per head (256 on GLM-5.3) and kv_b_proj has qk_nope_head_dim + v_head_dim (512); the element-count checks refuse either tensor at the other’s width. NoPE only: a nonzero qk_rope_head_dim is refused.