pub fn deinterleave_qkvz(
gpu: &dyn GpuBackend,
kernel: KernelHandle,
interleaved: DevicePtr,
output: DevicePtr,
num_tokens: u32,
num_groups: u32,
head_k_dim: u32,
vheads_per_group: u32,
head_v_dim: u32,
stream: u64,
) -> Result<()>Expand description
2026-09-25: Deinterleave the QKVZ projection output from GQA-grouped to sequential layout, per token.
Input row: [num_groups × (kd + kd + vpgvd + vpgvd)] Output row: [Q_total | K_total | V_total | Z_total]
Kernel: deinterleave_qkvz(interleaved, output, num_groups, head_k_dim, vheads_per_group, head_v_dim)
Grid: (num_tokens, ceil(total/256), 1) Block: (256, 1, 1)