pub fn w4a16_gemm(
gpu: &dyn GpuBackend,
kernel: KernelHandle,
input: DevicePtr,
weight: &QuantizedWeight,
output: DevicePtr,
m: u32,
n: u32,
k: u32,
stream: u64,
) -> Result<()>Expand description
W4A16 GEMM: C = A @ dequant(B).
A: [M, K] BF16 activations B: NVFP4 packed weights (E2M1 + FP8 scales + FP32 per-tensor scale) C: [M, N] BF16 output
Kernel: w4a16_gemm(A, B_packed, B_scale, scale2, C, M, N, K)
Grid: (ceil(N/64), ceil(M/64), 1) Block: (128, 1, 1)
Also the launcher for w4a16_gemm_t_k64_n64_p3 — the deep-K twin carries
the same 64-wide N tile and the identical argument list, so the two share
this grid rather than duplicating it.