deinterleave_qg

Function deinterleave_qg 

Source
pub fn deinterleave_qg(
    gpu: &dyn GpuBackend,
    kernel: KernelHandle,
    data: DevicePtr,
    num_tokens: u32,
    num_heads: u32,
    head_dim: u32,
    stride: u32,
    stream: u64,
) -> Result<()>
Expand description

2026-09-25: Deinterleave Q/gate from per-head interleaved to contiguous layout, in place, per token. Rows are stride elements apart.

Input layout: [Q_h0(hd), G_h0(hd), Q_h1(hd), G_h1(hd), …] Output layout: [Q_h0(hd), Q_h1(hd), …, G_h0(hd), G_h1(hd), …]

Kernel: deinterleave_qg(data, num_heads, head_dim, stride) Grid: (num_tokens, 1, 1) Block: (256, 1, 1) Dynamic shared memory: num_heads * head_dim * 2 BF16 values