File size: 3,576 Bytes
6abc190
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Validation

Local source validation covers NVIDIA GeForce RTX 5090 (SM120) and NVIDIA
Jetson AGX Thor (SM110).

```bash
python fp4-gemm/tests/test_fp4_gemm.py \
  --backend source \
  --mode full \
  --json-out internal-tests/fp4-gemm-source-full.json
```

Result:

- SM120 full gate: `25/25` checks passed, including all fused epilogues and
  the aggregate BF16 direct-producer layout gate.
- SM110 model-shape gate: `24/24` checks passed across PI0.5, GROOT, Cosmos
  Edge, and LingBot VLA projection shapes.
- Variants `0`, `1`, and `2` were checked.
- SM110 additionally checks production auto-dispatch (`variant=-1`).
- `nvfp4_gemm_bf16` is the canonical public API.
- Correctness reference dequantizes the same FP4/SFA and FP4/SFB inputs used
  by the kernel, then computes PyTorch GEMM on those dequantized values.
- The direct BF16 producer is byte-exact against the established
  BF16-to-FP16 plus FP16-producer contract for packed E2M1, mapped SFA/SFB
  bytes, and dequantized output. Covered activation shapes are `(1,5120)`,
  `(1,6144)`, `(1,17408)`, `(16,2048)`, and `(128,512)`; SFB coverage uses
  `(64,1024)`.

| Shape | Variant | Max abs | Mean abs | P99 abs | Cosine |
| --- | ---: | ---: | ---: | ---: | ---: |
| M=16, N=128, K=128 | 0 | 0.0 | 0.0 | 0.0 | 1.0 |
| M=16, N=128, K=128 | 1 | 0.0 | 0.0 | 0.0 | 1.0 |
| M=16, N=128, K=128 | 2 | 0.0 | 0.0 | 0.0 | 1.0 |
| M=32, N=256, K=256 | 0 | 0.0 | 0.0 | 0.0 | 1.0 |
| M=32, N=256, K=256 | 1 | 0.0 | 0.0 | 0.0 | 1.0 |
| M=32, N=256, K=256 | 2 | 0.0 | 0.0 | 0.0 | 1.0 |
| M=64, N=512, K=512 | 0 | 0.0 | 0.0 | 0.0 | 1.0 |
| M=64, N=512, K=512 | 1 | 0.0 | 0.0 | 0.0 | 1.0 |
| M=64, N=512, K=512 | 2 | 0.0 | 0.0 | 0.0 | 1.0 |

## Installed Artifact Validation

The local kernel-builder release candidate produced and passed ABI, manylinux,
layout, and builder `get_kernel` checks for:

- `torch211-cxx11-cu128-x86_64-linux`
- `torch211-cxx11-cu130-x86_64-linux`
- `torch212-cxx11-cu130-x86_64-linux`
- `torch212-cxx11-cu132-x86_64-linux`

The cu128/Torch 2.11 artifact passed `10/10` runtime gates: all nine
shape/variant correctness rows were exact against the staged reference, and
the public `nvfp4_gemm_bf16` wrapper was exact under
`torch.compile(fullgraph=True)`.

The SM110 release flake pins kernel-builder commit
`d720fa90fb9cd92d1bc60a9dc5c55bef2aafabb8`, which includes CUTLASS 4.5
support and the corrected CUTLASS 4.5.2 fixed-output hash. HF Jobs, the
SM110 aarch64 artifact build, and cold Hub loads must pass before the rebuilt
Hub release is considered complete.

## BF16 Direct Producer

RTX 5090, 100 warmup iterations and 1000 measured iterations:

| Shape | BF16 direct | BF16 cast + FP16 producer | Speedup | Native BF16 producer | Hub/native |
| --- | ---: | ---: | ---: | ---: | ---: |
| M=1, K=5120 | 4.098 us | 6.404 us | 1.563x | 6.150 us | 0.666x |
| M=1, K=6144 | 4.098 us | 6.403 us | 1.562x | 8.190 us | 0.500x |
| M=1, K=17408 | 4.096 us | 6.413 us | 1.566x | 18.442 us | 0.222x |

The native BF16 producer is included as a latency comparison but uses a
different FlashRT quantization strategy. Correctness acceptance is therefore
against this package's established FP16 producer contract, where all tested
packed and mapped scale bytes are exact.

## Thor Native Parity

The Tensor wrapper was compared against the same native FlashRT launchers on
Thor with 20 warmup and 100 measured iterations. For production auto-dispatch
across the six model shapes, wrapper/native latency ratio had median `1.019`
and maximum `1.086`. Correctness was exact (`max_abs=mean_abs=p99_abs=0`).