@@ -23,17 +23,19 @@ are implemented. Install `tf-kernel` when a pipeline uses one of its optimized C
2323| CMake | 3.26 or newer for source builds |
2424| GPU targets | SM80, SM90, and SM100 |
2525
26- Kernel availability depends on the selected build target. FP4 kernels require Blackwell (SM100 or newer); seeing
27- ` no fp4 operator available ` on Ampere or Hopper is expected . Core operations are currently validated with Python
28- 3.11, PyTorch 2.11.0+cu128, CUDA 12.8, and H100 (SM90a). Other targets and operation families should be validated on
29- their target GPU before production use.
26+ Kernel availability depends on the selected build target. FP4 kernels require Blackwell (SM100 or newer), and
27+ ` tf_kernel.FP4_AVAILABLE ` is false without an import-time warning on Ampere and Hopper. Core operations are currently
28+ validated with Python 3.11, PyTorch 2.11.0+cu128, CUDA 12.8, and H100 (SM90a). Other targets and operation families
29+ should be validated on their target GPU before production use.
3030
31- !!! warning "Current H100 SageAttention limitation"
31+ The wheel records and verifies its PyTorch public version, PyTorch CUDA version, C++11 ABI, and target GPU family at
32+ import. A process exposing GPUs from different architecture families is rejected. SageAttention v2 auto-dispatch is
33+ enabled only for SM80, SM86, SM89, SM90, SM120, and SM121.
3234
33- In the currently validated H100 build, the architecture-selected `tf_kernel.sageattn()` path chooses the
34- SM90-specific FP8 kernel and can fail with `CUDA error: misaligned address`. RMSNorm, fused activations, FP8
35- quantization, and the generic FP8 SageAttention path pass smoke tests. Do not enable the SM90-specific SageAttention
36- backend in production until its focused GPU test passes on the wheel being deployed .
35+ !!! note " H100 SageAttention dispatch"
36+
37+ On H100, `tf_kernel.sageattn()` selects the validated SM90 FP8 implementation. TeleFuser uses the same kernel
38+ when `SAGE_ATTN_2_8_8_SM90` is configured and `tf-kernel` is available .
3739
3840## Build and install from source
3941
@@ -55,6 +57,9 @@ The local build is independent of the TeleFuser installation. Make builds a corr
5557into ` PYTHON ` . Direct ` pip install . ` and ` pip install -e . ` source builds fail with instructions to use Make; pip
5658package-index installation is not available.
5759
60+ Local builds use a ` linux_* ` platform tag. The container build may use ` manylinux_2_28 ` only after checking every
61+ shared object's GLIBC symbol versions against that policy.
62+
5863For a reproducible target-specific build:
5964
6065``` bash
111116An H100-specific wheel should load its common extension from an ` sm90 ` package directory. Also run
112117` python -m pip check ` to expose dependency conflicts in the environment.
113118
119+ For development validation, run ` make test-cpu ` , ` make test-smoke ` , and ` make test-wheel ` . The smoke and GPU targets
120+ install the wheel into an isolated temporary directory before collecting tests. ` make test ` is the bounded GPU suite;
121+ reserve the 6,000+ case ` make test-full ` matrix for a dedicated validation host.
122+
114123## Usage
115124
116125TeleFuser users should call the public ops layer; it selects ` tf-kernel ` for supported eager CUDA paths and keeps the
@@ -137,18 +146,18 @@ x = torch.randn(8, 1024, device="cuda", dtype=torch.float16)
137146weight = torch.ones(1024 , device = " cuda" , dtype = torch.float16)
138147y = tf_kernel.rmsnorm(x, weight, eps = 1e-6 )
139148
140- # H100-tested generic FP8 SageAttention path.
149+ # H100-tested SM90 FP8 SageAttention path.
141150# HND layout: [batch, heads, sequence, head_dim]
142151q = torch.randn(1 , 8 , 128 , 64 , device = " cuda" , dtype = torch.float16)
143152k = torch.randn_like(q)
144153v = torch.randn_like(q)
145- attn_output = tf_kernel.sageattn_qk_int8_pv_fp8_cuda (
154+ attn_output = tf_kernel.sageattn_qk_int8_pv_fp8_cuda_sm90 (
146155 q,
147156 k,
148157 v,
149158 tensor_layout = " HND" ,
150159 is_causal = False ,
151- pv_accum_dtype = " fp32" ,
160+ pv_accum_dtype = " fp32+fp32 " ,
152161)
153162```
154163
@@ -186,12 +195,11 @@ Check `nvcc --version`, set `CUDA_HOME` to the CUDA 12.8+ toolkit, and put `$CUD
186195Rebuild with ` make build-auto ` on the target machine or use the explicit ` build-sm80 ` , ` build-sm90 ` , or
187196` build-sm100 ` target. Architecture-specific wheels cannot provide kernels that were omitted at build time.
188197
189- ### SageAttention fails with ` misaligned address ` on H100
198+ ### Validate an SM90 SageAttention deployment
199+
200+ The SM90-specific kernel is enabled on H100. After building the wheel, run the synchronized tf-kernel smoke test and
201+ the TeleFuser public-ops GPU integration test before deploying that artifact on a new host.
190202
191- The architecture selector currently routes H100 to the SM90-specific FP8 implementation. Treat a failure in that
192- path as an unsupported backend for the current wheel; select another TeleFuser attention implementation instead of
193- continuing in the CUDA process after the asynchronous error. The generic FP8 function shown above is useful for
194- isolated validation, but production enablement still requires parity and workload benchmarks.
195203
196204### The build exhausts CPU or memory
197205
0 commit comments