aboutsummaryrefslogtreecommitdiff
path: root/tosa.xml
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2024-02-14 16:33:31 -0800
committerEric Kunze <eric.kunze@arm.com>2024-03-13 16:31:19 -0700
commit0afe61f88ce3d2f445c5f01ae5567cb1b0b7f303 (patch)
treebfa03c381634090e9074d3e1167c3256a31f3c84 /tosa.xml
parent6dd341093507157aabbea00b90ca8902509cfd4f (diff)
downloadspecification-0afe61f88ce3d2f445c5f01ae5567cb1b0b7f303.tar.gz
Modify convolution operators to improve bias handling
Accumulator size moves to an enumerated attribute, out_t for floating-point changes to be the size of the input. Bias for floating-point also becomes the bit width of the input type. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I7369417adbb1106ce34a1978e7f511a30272c318
Diffstat (limited to 'tosa.xml')
-rw-r--r--tosa.xml96
1 files changed, 57 insertions, 39 deletions
diff --git a/tosa.xml b/tosa.xml
index 17c82f9..675eeb6 100644
--- a/tosa.xml
+++ b/tosa.xml
@@ -92,8 +92,8 @@
<levellimit value="pad_right" limit="MAX_KERNEL"/>
<rank min="1" max="1"/>
</argument>
- <argument category="attribute" name="acc_size" type="tensor_t" shape="-" tensor-element-type="acc_size_t">
- <description>Enumerated type, must be one of INT32, FP16, FP32, as defined in the Supported Data Types table for this operation</description>
+ <argument category="attribute" name="acc_type" type="tensor_t" shape="-" tensor-element-type="acc_type_t">
+ <description>Enumerated type, must be one of INT32, INT48, FP16, FP32, as defined in the Supported Data Types table for this operation</description>
<rank min="0" max="0"/>
</argument>
<argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_out_t">
@@ -174,6 +174,10 @@
<description>[dilation_y, dilation_x]</description>
<rank min="1" max="1"/>
</argument>
+ <argument category="attribute" name="acc_type" type="tensor_t" shape="-" tensor-element-type="acc_type_t">
+ <description>Enumerated type, must be one of INT32, INT48, FP16, FP32, as defined in the Supported Data Types table for this operation</description>
+ <rank min="0" max="0"/>
+ </argument>
<argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
<description>Input tensor zero point. Must be zero for non-int8 types.</description>
<rank min="0" max="0"/>
@@ -199,32 +203,33 @@
<type name='in_t' />
<type name='weight_t' />
<type name='out_t' />
+ <type name='acc_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" >
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" acc_t="i32_t">
<op_profile name="BI"/>
</typesupport>
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t">
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" acc_t="i32_t">
<op_profile name="EXT-INT4"/>
</typesupport>
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" acc_t="i48_t">
<op_profile name="EXT-INT16"/>
</typesupport>
- <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="EXT-FP8E4M3"/>
</typesupport>
- <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
+ <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="EXT-FP8E5M2"/>
</typesupport>
- <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="MI"/>
</typesupport>
- <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t" acc_t="fp32_t">
<op_profile name="MI"/>
</typesupport>
- <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="bf16_t" acc_t="fp32_t">
<op_profile name="EXT-BF16"/>
</typesupport>
- <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t" acc_t="fp32_t">
<op_profile name="MI"/>
</typesupport>
</operator>
@@ -268,6 +273,10 @@
<description>[dilation_d, dilation_y, dilation_x]</description>
<rank min="1" max="1"/>
</argument>
+ <argument category="attribute" name="acc_type" type="tensor_t" shape="-" tensor-element-type="acc_type_t">
+ <description>Enumerated type, must be one of INT32, INT48, FP16, FP32, as defined in the Supported Data Types table for this operation</description>
+ <rank min="0" max="0"/>
+ </argument>
<argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
<description>Input tensor zero point. Must be zero for non-int8 types.</description>
<rank min="0" max="0"/>
@@ -294,31 +303,31 @@
<type name='weight_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t">
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" acc_t="i32_t">
<op_profile name="BI"/>
</typesupport>
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t">
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" acc_t="i32_t">
<op_profile name="EXT-INT4"/>
</typesupport>
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" acc_t="i48_t">
<op_profile name="EXT-INT16"/>
</typesupport>
- <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="EXT-FP8E4M3"/>
</typesupport>
- <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
+ <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="EXT-FP8E5M2"/>
</typesupport>
- <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="MI"/>
</typesupport>
- <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t" acc_t="fp32_t">
<op_profile name="MI"/>
</typesupport>
- <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="bf16_t" acc_t="fp32_t">
<op_profile name="EXT-BF16"/>
</typesupport>
- <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t" acc_t="fp32_t">
<op_profile name="MI"/>
</typesupport>
</operator>
@@ -358,6 +367,10 @@
<description>[dilation_y, dilation_x]</description>
<rank min="1" max="1"/>
</argument>
+ <argument category="attribute" name="acc_type" type="tensor_t" shape="-" tensor-element-type="acc_type_t">
+ <description>Enumerated type, must be one of INT32, INT48, FP16, FP32, as defined in the Supported Data Types table for this operation</description>
+ <rank min="0" max="0"/>
+ </argument>
<argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
<description>Input tensor zero point. Must be zero for non-int8 types.</description>
<rank min="0" max="0"/>
@@ -384,31 +397,31 @@
<type name='weight_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" >
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" acc_t="i32_t">
<op_profile name="BI"/>
</typesupport>
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" >
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" acc_t="i32_t">
<op_profile name="EXT-INT4"/>
</typesupport>
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" acc_t="i48_t">
<op_profile name="EXT-INT16"/>
</typesupport>
- <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
+ <typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="EXT-FP8E4M3"/>
</typesupport>
- <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
+ <typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="EXT-FP8E5M2"/>
</typesupport>
- <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="MI"/>
</typesupport>
- <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t" acc_t="fp32_t">
<op_profile name="MI"/>
</typesupport>
- <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="bf16_t" acc_t="fp32_t">
<op_profile name="EXT-BF16"/>
</typesupport>
- <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t" acc_t="fp32_t">
<op_profile name="MI"/>
</typesupport>
</operator>
@@ -684,6 +697,10 @@
<levellimit value="stride_x" limit="MAX_STRIDE"/>
<rank min="1" max="1"/>
</argument>
+ <argument category="attribute" name="acc_type" type="tensor_t" shape="-" tensor-element-type="acc_type_t">
+ <description>Enumerated type, must be one of INT32, INT48, FP16, FP32, as defined in the Supported Data Types table for this operation</description>
+ <rank min="0" max="0"/>
+ </argument>
<argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
<description>Input tensor zero point. Must be zero for non-int8 types.</description>
<rank min="0" max="0"/>
@@ -704,37 +721,37 @@
<description>Output tensor</description>
<rank min="4" max="4"/>
</argument>
- </arguments>
+ </arguments>
<types>
<type name='in_t' />
<type name='weight_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t">
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" acc_t="i32_t">
<op_profile name="BI"/>
</typesupport>
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t">
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" acc_t="i32_t">
<op_profile name="EXT-INT4"/>
</typesupport>
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" acc_t="i48_t">
<op_profile name="EXT-INT16"/>
</typesupport>
<typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" out_t="fp16_t">
<op_profile name="EXT-FP8E4M3"/>
</typesupport>
- <typesupport mode="fp8e5m2" in_t="fp8e5m2_t" out_t="fp16_t">
+ <typesupport mode="fp8e5m2" in_t="fp8e5m2_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="EXT-FP8E5M2"/>
</typesupport>
- <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t" acc_t="fp16_t">
<op_profile name="MI"/>
</typesupport>
- <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t" acc_t="fp32_t">
<op_profile name="MI"/>
</typesupport>
- <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="bf16_t" acc_t="fp32_t">
<op_profile name="EXT-BF16"/>
</typesupport>
- <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t" acc_t="fp32_t">
<op_profile name="MI"/>
</typesupport>
</operator>
@@ -3299,10 +3316,11 @@ used.</description>
<enumval value="1" name="BILINEAR" description="Bilinear resize"/>
</enum>
- <enum name="acc_size_t" description="Allowed accumulator sizes">
+ <enum name="acc_type_t" description="Allowed accumulator types">
<enumval value="0" name="INT32" description="32-bit integer"/>
<enumval value="1" name="FP16" description="16-bit floating-point"/>
<enumval value="2" name="FP32" description="32-bit floating-point"/>
+ <enumval value="3" name="INT48" description="48-bit integer"/>
</enum>
<enum name="var_t" description="Variable tensor data type">