pub fn w8a16_gemv_dual(
gpu: &dyn GpuBackend,
kernel: KernelHandle,
input: DevicePtr,
weight1: DevicePtr,
row_scale1: DevicePtr,
output1: DevicePtr,
weight2: DevicePtr,
row_scale2: DevicePtr,
output2: DevicePtr,
n: u32,
k: u32,
stream: u64,
) -> Result<()>Expand description
2026-09-25: Two FP8 E4M3 GEMVs over the same BF16 input in one launch;
blockIdx.z picks projection 1 or 2. Both have n outputs. Each weight is
[n, k] bytes with an FP32 [n/128, k/128] block-scale buffer.