unlock unlimited code runs for $79, limited time →
NOSSLETTER.techLIVE
back to archive

[Perf][DSv4.1] Fuse small-batch WO-A with inverse RoPE and MXFP8 quant on SM100/SM103

Language: Python+759 -55performance
concepts demonstrated
GPU kernel fusionPrefetching and overlapping computationQuantization techniques in neural networksPipelined matrix multiplication with shared memory
The Issue & Context

On SM100/SM103 GPUs, the DSv4.1 output projection ran four separate kernels per layer, causing latency overhead at decode batch sizes due to sequential kernel launches and data transfers.

Root Cause Analysis

The original design split inverse RoPE, FP8 quantization, and matrix multiplications into separate kernels, leading to redundant memory operations and synchronization delays, especially for small batch sizes common in decoding.

Solution Strategy & Architectural Pattern

Introduced a fused CuTe-DSL kernel, FusedWoAKernel, that combines inverse RoPE, per-32 FP8 quantization, and the wo_a matrix multiplication with MXFP8 quantization into a single pipelined kernel. This kernel prefetches weights under producer dependency, overlaps RoPE coefficient loading, and uses split-K MMA with efficient synchronization to reduce latency and memory overhead.

Key Takeaway for Contributors

Fusing multiple small kernels into a single pipelined GPU kernel can significantly reduce latency and improve throughput for small-batch workloads by minimizing memory traffic and synchronization costs, especially on advanced GPU architectures like SM100/SM103.