tvm_tirx.tirx.transform.FP8ComputeLegalize#
- tvm_tirx.tirx.transform.FP8ComputeLegalize(promote_dtype='float32')#
Promote unsupported FP8 computations and internal temporaries.
Inserts conversions at FP8 boundaries. Leaves functions unchanged when their CUDA target reports native FP8 support.
- Parameters:
promote_dtype (str) – The data type we promote fp8 to, options: float16/float32.
- Returns:
fpass (tvm_tirx.ir.transform.Pass) – The result pass
Examples
import tvm_tirx as tvm from tvm_tirx.script import ir as I, tirx as T from tvm_tirx.tirx import transform as tr @I.ir_module class Before: @T.function(private=True) def main(): A = T.alloc_tensor(ty_args=[T.Tensor((1,), "float8_e5m2")]) A[0] = T.float8_e5m2(1) T.evaluate(A[0] + T.float8_e5m2(2)) @I.ir_module class Expected: @T.function(private=True) def main(): A = T.alloc_tensor(ty_args=[T.Tensor((1,), T.float16)]) A[0] = T.float16(1.0) T.evaluate(A[0] + T.float16(2.0)) def run_pass(): return tr.FP8ComputeLegalize("float16")(Before) tvm.ir.assert_structural_equal(run_pass(), Expected)