aboutsummaryrefslogtreecommitdiff
path: root/tosa.xml
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2023-10-20 15:58:55 -0700
committerEric Kunze <eric.kunze@arm.com>2024-02-14 16:36:04 -0800
commit74e2ceba954ed6111b3e3ce40c5ff88fe79ff043 (patch)
tree7e1967b073313d7df4885693eda931230d401eb0 /tosa.xml
parent9fe5e964e2193f0e345670f7f4098beecd7fd6eb (diff)
downloadspecification-74e2ceba954ed6111b3e3ce40c5ff88fe79ff043.tar.gz
Initial FP8 support
Adds support for Open Compute Project (OCP) 8-bit floating point operations to the TOSA specification. Both E4M3 and E5M2 types are supported for profiles as indicated in the Supported Data Types table for each operator. FP8 operator list ARGMAX AVGPOOL CONV2D CONV3D DEPTHWISE_CONV2D MATMUL MAX_POOL2D TRANSPOSE_CONV2D CONST CAST CONCAT PAD DIM RESHAPE REVERSE SLICE TILE TRANSPOSE GATHER SCATTER Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I3dd83f48afcc3c880c5c88039337ff4f1fd95b1b
Diffstat (limited to 'tosa.xml')
-rw-r--r--tosa.xml182
1 files changed, 182 insertions, 0 deletions
diff --git a/tosa.xml b/tosa.xml
index 691c35c..19822f6 100644
--- a/tosa.xml
+++ b/tosa.xml
@@ -36,6 +36,13 @@
</types>
<typesupport mode="signed 8" in_t="i8_t" out_t="i32_t"/>
<typesupport mode="signed 16" in_t="i16_t" out_t="i32_t" />
+ <typesupport mode="fp8e4m3" in_t="fp8e4m3_t" out_t="i32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_t="fp8e5m2_t" out_t="i32_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_t="fp16_t" out_t="i32_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -99,6 +106,13 @@
</types>
<typesupport mode="signed 8 with int32 accumulate" in_out_t="i8_t" acc_t="i32_t" />
<typesupport mode="signed 16 with int32 accumulate" in_out_t="i16_t" acc_t="i32_t" />
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_out_t="fp8e4m3_t" acc_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2 with fp16 accumulate" in_out_t="fp8e5m2_t" acc_t="fp16_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_out_t="fp16_t" acc_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -181,6 +195,13 @@
<typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
<typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
<typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -267,6 +288,13 @@
<typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
<typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
<typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -349,6 +377,13 @@
<typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
<typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
<typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -492,6 +527,13 @@
</types>
<typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" out_t="i32_t" />
<typesupport mode="signed 16x16 with int48 accumulate" in_t="i16_t" out_t="i48_t" />
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_t="fp8e5m2_t" out_t="fp16_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -546,6 +588,13 @@
</types>
<typesupport mode="signed 8" in_out_t="i8_t" />
<typesupport mode="signed 16" in_out_t="i16_t" />
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
<profile name="MI"/>
<profile name="MT"/>
@@ -654,6 +703,13 @@
<typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
<typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
<typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_t="fp8e5m2_t" out_t="fp16_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -1932,6 +1988,13 @@
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -1974,6 +2037,13 @@
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2010,6 +2080,13 @@
<typesupport mode="signed 8" in_t="i8_t"/>
<typesupport mode="signed 16" in_t="i16_t"/>
<typesupport mode="signed 32" in_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2047,6 +2124,13 @@
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2084,6 +2168,13 @@
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2126,6 +2217,13 @@ used.</description>
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2163,6 +2261,13 @@ used.</description>
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2200,6 +2305,13 @@ used.</description>
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2237,6 +2349,13 @@ used.</description>
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2276,6 +2395,13 @@ used.</description>
<typesupport mode="signed 8" in_out_t="i8_t"/>
<typesupport mode="signed 16" in_out_t="i16_t"/>
<typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2422,10 +2548,38 @@ used.</description>
<profile name="MI"/>
<profile name="MT"/>
</typesupport>
+ <typesupport mode="bf16 to fp8e4m3" in_t="bf16_t" out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 to fp8e5m2" in_t="bf16_t" out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="bf16 to fp32" in_t="bf16_t" out_t="fp32_t">
<profile name="MI"/>
<profile name="MT"/>
</typesupport>
+ <typesupport mode="fp8e4m3 to fp16" in_t="fp8e4m3_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e4m3 to bf16" in_t="fp8e4m3_t" out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e4m3 to fp32" in_t="fp8e4m3_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2 to fp16" in_t="fp8e5m2_t" out_t="fp16_t">
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2 to bf16" in_t="fp8e5m2_t" out_t="bf16_t">
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2 to fp32" in_t="fp8e5m2_t" out_t="fp32_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16 to signed 8" in_t="fp16_t" out_t="i8_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2438,6 +2592,13 @@ used.</description>
<profile name="MI"/>
<profile name="MT"/>
</typesupport>
+ <typesupport mode="fp16 to fp8e4m3" in_t="fp16_t" out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 to fp8e5m2" in_t="fp16_t" out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16 to fp32" in_t="fp16_t" out_t="fp32_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2454,6 +2615,13 @@ used.</description>
<profile name="MI"/>
<profile name="MT"/>
</typesupport>
+ <typesupport mode="fp32 to fp8e4m3" in_t="fp32_t" out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 to fp8e5m2" in_t="fp32_t" out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp32 to bf16" in_t="fp32_t" out_t="bf16_t">
<profile name="MI"/>
<profile name="MT"/>
@@ -2552,6 +2720,13 @@ used.</description>
<typesupport mode="16-bit" out_t="i16_t" />
<typesupport mode="32-bit" out_t="i32_t" />
<typesupport mode="48-bit" out_t="i48_t" />
+ <typesupport mode="fp8e4m3" out_t="fp8e4m3_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" out_t="fp8e5m2_t" >
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" out_t="fp16_t" >
<profile name="MI"/>
<profile name="MT"/>
@@ -2586,6 +2761,13 @@ used.</description>
<typesupport mode="16-bit" in_out_t="i16_t" />
<typesupport mode="32-bit" in_out_t="i32_t" />
<typesupport mode="48-bit" in_out_t="i48_t" />
+ <typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
+ <profile name="MT"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
<profile name="MI"/>
<profile name="MT"/>