w8a16_gemv

Function w8a16_gemv 

Source
pub fn w8a16_gemv(
    gpu: &dyn GpuBackend,
    kernel: KernelHandle,
    input: DevicePtr,
    weight: DevicePtr,
    row_scale: DevicePtr,
    output: DevicePtr,
    n: u32,
    k: u32,
    stream: u64,
) -> Result<()>
Expand description

W8A16 GEMV (M=1): C = A @ dequant_lut(B_fp8) * row_scale for FP8 E4M3 weights.

A: [1, K] BF16, B: [N, K] FP8 E4M3 bytes, row_scale: [N] f32, C: [1, N] BF16. Uses a 256-entry E4M3 LUT in shared memory for branchless dequant (no hardware FP4/FP8 conversion PTX needed — works on SM121 without cvt.rn.satfinite). 4 outputs/block, 64 threads (2 warps) per output. Cross-warp smem reduction.

Kernel: w8a16_gemv(A, B, row_scale, C, N, K) Grid: (ceil(N/4), 1, 1) Block: (256, 1, 1)