pub fn gdn_decode_f32_conv_norm(
gpu: &dyn GpuBackend,
kernel: KernelHandle,
h_state: DevicePtr,
conv_state: DevicePtr,
new_input: DevicePtr,
conv_weight: DevicePtr,
gate: DevicePtr,
beta: DevicePtr,
z_gate: DevicePtr,
norm_weight: DevicePtr,
output: DevicePtr,
batch_size: u32,
num_k_heads: u32,
num_v_heads: u32,
k_dim: u32,
v_dim: u32,
conv_dim: u32,
d_conv: u32,
l2_eps: f32,
eps: f32,
stream: u64,
) -> Result<()>Expand description
2026-09-25: Conv1d update + L2 norm, the GDN recurrence and the gated RMS
norm in one decode launch (gated_delta_rule_decode_f32_conv_norm).
One block per k-head: it owns k-head kh and its head_repeat v-heads, so
it is the only writer of their q/k and v conv_state rows. The block is
head_repeat * v_dim threads, and the kernel also requires
2 * k_dim <= head_repeat * v_dim and k_dim == v_dim.