pub fn hc_pre_lowrank(
gpu: &dyn GpuBackend,
kernel: KernelHandle,
streams: DevicePtr,
w: &HcLowRank,
y_out: DevicePtr,
inj_out: DevicePtr,
scratch: DevicePtr,
num_tokens: u32,
hidden_size: u32,
hc_mult: u32,
norm_eps: f32,
stream: u64,
) -> Result<()>Expand description
2026-09-25: Collapse the hc_mult streams to one, and emit the per-stream injection weights
the matching hc_post_lowrank needs: streams [T, hc, H] -> y_out [T, H] BF16,
inj_out [T, hc] FP32. Fails when w.inject_w is null (a site without an injection weight
is the model-level mixer, which uses hc_head_lowrank).