absorb_o

Function absorb_o 

Source
pub fn absorb_o(
    cfg: &Glm5NextDsaConfig,
    o_local: &[f32],
    kv_b_local: &[f32],
    local_heads: usize,
) -> Result<Vec<f32>>
Expand description

2026-09-25: The output-side absorption: o_absorb[i][h*kvl + c] = Σ_r o_proj[i][h*vd + r] · kv_b[h*(nope+vd) + nope + r][c].

The output-side counterpart of absorb_q: it maps the decode kernel’s latent output back through kv_b_proj’s V half. It runs on this rank’s heads only (o_local, kv_b_local): output columns of head h read only head h’s o_proj columns and kv_b rows. Each head’s V half starts at row qk_nope_head_dim of that head’s kv_b block.