pub fn deinterleave_qg_split(
gpu: &dyn GpuBackend,
kernel: KernelHandle,
data: DevicePtr,
q_out: DevicePtr,
num_tokens: u32,
num_heads: u32,
head_dim: u32,
stride: u32,
stream: u64,
) -> Result<()>Expand description
2026-09-25: deinterleave_qg with Q written to q_out (contiguous
[num_tokens, num_heads * head_dim]) instead of in place. The gate is
written back into data at offset num_heads * head_dim of each row.