diff options
author | Dominic Symes <dominic.symes@arm.com> | 2023-05-09 10:14:49 +0100 |
---|---|---|
committer | Dominic Symes <dominic.symes@arm.com> | 2023-08-16 11:50:24 +0100 |
commit | 830b43b1d1bd82edd57dee1f5cac12e2b5cf0e04 (patch) | |
tree | 971d15dc6ae00118d7be2df9a50dd7445d8428d9 /tosa.xml | |
parent | e1f517c541a61d18defc671028b24824c1eadd57 (diff) | |
download | specification-830b43b1d1bd82edd57dee1f5cac12e2b5cf0e04.tar.gz |
Add DIM operator and operations on shape_t values
Shape inference derives the shape of tensors in
the graph from input shapes. Operations such as RESHAPE
may need calculations to derive the new tensor shape.
This patch:
- Adds a DIM operator to get the size of a tensor in
a given axis as a rank 0 tensor of type shape_t
- Allows RESHAPE to take a 1D shape tensor as input for
the new shape
- Allows RESIZE, TILE, PAD to take input sizes based
on shape tensors.
- Allows ADD, SUB, MUL, INTDIV to operate on rank 0
shape_t tensors
- Allows CONCAT to concatenate 0D shape_t tensors to
a 1D shape_t tensor
- Adds CONST support for shape_t tensors
In this version of the specification shape tensors must
be resolvable to constants at backend compile time.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I484bd44452453b5e05d0d8a82689564587b224e4
Diffstat (limited to 'tosa.xml')
-rw-r--r-- | tosa.xml | 60 |
1 files changed, 52 insertions, 8 deletions
@@ -773,6 +773,7 @@ <type name='in_out_t'/> </types> <typesupport mode="signed 32" in_out_t="int32_t"/> + <typesupport mode="shape" in_out_t="shape_t"/> <typesupport mode="fp16" in_out_t="fp16_t" > <profile name="MI"/> <profile name="MT"/> @@ -907,6 +908,7 @@ <type name='in_out_t'/> </types> <typesupport mode="signed 32" in_out_t="int32_t"/> + <typesupport mode="shape" in_out_t="shape_t"/> </operator> <operator> <name>LOGICAL_AND</name> @@ -1118,6 +1120,7 @@ <typesupport mode="signed 8" in_t="int8_t" out_t="int32_t"/> <typesupport mode="signed 16" in_t="int16_t" out_t="int32_t"/> <typesupport mode="signed 32" in_t="int32_t" out_t="int32_t"/> + <typesupport mode="shape" in_t="shape_t" out_t="shape_t"/> <typesupport mode="fp16" in_t="fp16_t" out_t="fp16_t"> <profile name="MI"/> <profile name="MT"/> @@ -1185,6 +1188,7 @@ <type name='in_out_t'/> </types> <typesupport mode="signed 32" in_out_t="int32_t"/> + <typesupport mode="shape" in_out_t="shape_t"/> <typesupport mode="fp16" in_out_t="fp16_t" > <profile name="MI"/> <profile name="MT"/> @@ -1863,7 +1867,7 @@ <arguments> <argument category="input" name="input1" type="tensor_list_t" shape="shapes1" tensor-element-type="in_out_t"> <description>List of input tensors. All inputs must have the same rank and data type</description> - <rank min="1" max="MAX_RANK"/> + <rank min="0" max="MAX_RANK"/> </argument> <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="int32_t"> <description>Axis along which concatenation is to occur, in range from 0 to rank(shape)-1</description> @@ -1882,6 +1886,7 @@ <typesupport mode="signed 8" in_out_t="int8_t"/> <typesupport mode="signed 16" in_out_t="int16_t"/> <typesupport mode="signed 32" in_out_t="int32_t"/> + <typesupport mode="shape" in_out_t="shape_t"/> <typesupport mode="fp16" in_out_t="fp16_t"> <profile name="MI"/> <profile name="MT"/> @@ -1902,7 +1907,7 @@ <description>Input tensor</description> <rank min="1" max="MAX_RANK"/> </argument> - <argument category="attribute" name="padding" type="tensor_t" shape="[rank(shape1),2]" tensor-element-type="int32_t"> + <argument category="input" name="padding" type="tensor_t" shape="[rank(shape1),2]" tensor-element-type="shape_t"> <description>Number of pad elements at the start and end of each dimension</description> <rank min="2" max="2"/> </argument> @@ -1937,6 +1942,43 @@ </typesupport> </operator> <operator> + <name>DIM</name> + <arguments> + <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_t"> + <description>Input tensor</description> + <levellimit value="rank(shape)" limit="MAX_RANK"/> + <rank min="1" max="MAX_RANK"/> + </argument> + <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="int32_t"> + <description>Axis in range from 0 to rank(shape) - 1</description> + <rank min="0" max="0"/> + </argument> + <argument category="output" name="output" type="tensor_t" shape="-" tensor-element-type="shape_t" > + <description>Output rank 0 tensor giving the size of the shape for the given axis</description> + <rank min="0" max="0"/> + </argument> + </arguments> + <types> + <type name='in_t'/> + </types> + <typesupport mode="boolean" in_t="bool_t"/> + <typesupport mode="signed 8" in_t="int8_t"/> + <typesupport mode="signed 16" in_t="int16_t"/> + <typesupport mode="signed 32" in_t="int32_t"/> + <typesupport mode="fp16" in_t="fp16_t"> + <profile name="MI"/> + <profile name="MT"/> + </typesupport> + <typesupport mode="bf16" in_t="bf16_t"> + <profile name="MI"/> + <profile name="MT"/> + </typesupport> + <typesupport mode="fp32" in_t="fp32_t"> + <profile name="MI"/> + <profile name="MT"/> + </typesupport> + </operator> + <operator> <name>RESHAPE</name> <arguments> <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t"> @@ -1944,8 +1986,8 @@ <levellimit value="rank(shape1)" limit="MAX_RANK"/> <rank min="1" max="MAX_RANK"/> </argument> - <argument category="attribute" name="new_shape" type="tensor_t" shape="[rank(shape)]" tensor-element-type="int32_t"> - <description>List of values, with each element giving the size of the result tensor for the given dimension. At most one dimension may be given as -1 to automatically calculate the dimension size.</description> + <argument category="input" name="shape" type="tensor_t" shape="[rank(shape)]" tensor-element-type="shape_t"> + <description>1D shape tensor giving the new shape.</description> <rank min="1" max="1"/> </argument> <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t"> @@ -1998,6 +2040,7 @@ <typesupport mode="signed 8" in_out_t="int8_t"/> <typesupport mode="signed 16" in_out_t="int16_t"/> <typesupport mode="signed 32" in_out_t="int32_t"/> + <typesupport mode="shape" in_out_t="shape_t"/> <typesupport mode="fp16" in_out_t="fp16_t"> <profile name="MI"/> <profile name="MT"/> @@ -2060,7 +2103,7 @@ used.</description> <description>Input tensor</description> <rank min="1" max="MAX_RANK"/> </argument> - <argument category="attribute" name="multiples" type="tensor_t" shape="[rank(shape1)]" tensor-element-type="int32_t"> + <argument category="input" name="multiples" type="tensor_t" shape="[rank(shape1)]" tensor-element-type="shape_t"> <description>Number of times to replicate input1 in each dimension</description> <rank min="1" max="1"/> </argument> @@ -2212,17 +2255,17 @@ used.</description> <description>Input tensor</description> <rank min="4" max="4"/> </argument> - <argument category="attribute" name="scale" type="tensor_t" shape="[4]" tensor-element-type="int16_t"> + <argument category="input" name="scale" type="tensor_t" shape="[4]" tensor-element-type="shape_t"> <description>[scale_y_n, scale_y_d, scale_x_n, scale_x_d]</description> <levellimit value="scale_y_n/scale_y_d" limit="MAX_SCALE"/> <levellimit value="scale_x_n/scale_x_d" limit="MAX_SCALE"/> <rank min="1" max="1"/> </argument> - <argument category="attribute" name="offset" type="tensor_t" shape="[2]" tensor-element-type="int16_t"> + <argument category="input" name="offset" type="tensor_t" shape="[2]" tensor-element-type="shape_t"> <description>[offset_y, offset_x]</description> <rank min="1" max="1"/> </argument> - <argument category="attribute" name="border" type="tensor_t" shape="[2]" tensor-element-type="int16_t"> + <argument category="input" name="border" type="tensor_t" shape="[2]" tensor-element-type="shape_t"> <description>[border_y, border_x]</description> <rank min="1" max="1"/> </argument> @@ -2464,6 +2507,7 @@ used.</description> <typesupport mode="signed 16" out_t="int16_t" /> <typesupport mode="signed 32" out_t="int32_t" /> <typesupport mode="signed 48" out_t="int48_t" /> + <typesupport mode="shape" out_t="shape_t" /> <typesupport mode="fp16" out_t="fp16_t" > <profile name="MI"/> <profile name="MT"/> |