[错误][TIRx][FP8] 在转换为/转换至 float32 时,DTypeConversion 误码浮点8_e5m2 的零/亚标量值
@T.prim_func def fp8_to_f32(A: T.Buffer((6,), "float8_e5m2"), B: T.Buffer((6,), "float32")): for i in T.serial(6): B[i] = A[i]
@T.prim_func def f32_to_fp8(A: T.Buffer((6,), "float32"), B: T.Buffer((6,), "float8_e5m2")): for i in T.serial(6): B[i] = A[i]
fp8_to_f32_module = tirx.build(fp8_to_f32, target="llvm") fp8_to_f32_src = tvm.runtime.tensor(FP8_TO_F32_INPUT_BITS.view(ml_dtypes.float8_e5m2)) fp8_to_f32_dst = tvm.runtime.tensor(np.zeros(6, dtype=np.float32)) fp8_to_f32_module["main"](fp8_to_f32_src, fp8_to_f32_dst) fp8_to_f32_observed = [int(value) for value in fp8_to_f32_dst.numpy().view(np.uint32)]
f32_to_fp8_module = tirx.build(f32_to_fp8, target="llvm") f32_to_fp8_src = tvm.runtime.tensor(F32_TO_FP8_INPUT_BITS.view(np.float32)) f32_to_fp8_dst = tvm.runtime.tensor(np.zeros(6, dtype=ml_dtypes.float8_e5m2)) f32_to_fp8_module["main"](f32_to_fp8_src, f32_to_fp8_dst) f32_to_fp8_observed = [int(value) for value in f32_to_fp8_dst.numpy().view(np.uint8)]
print("float8_e5m2 -> float32 observed:", [f"0x{x:08X}" for x in fp8_to_f32_observed]) print("float8_e5m2 -> float32 expected:", [f"0x{x:08X}" for x in FP8_TO_F32_EXPECTED_BITS]) print("float32 -> float8_e5m2 observed:", [f"0x{x:02X}" for x in f32_to_fp8_observed]) print("float32 -> float8_e5m2 expected:", [f"0x{x:02X}" for x in
内容来源: apache/tvm