Age | Commit message (Collapse) | Author |
|
* refactored error_if checks to avoid logic overlap
* Added check to ensure that size dimensions match
output dimension
* Defined the rank() function in pseudocode helpers
Change-Id: I56bf06252d9149d449c984126e8f2025a07d6034
Signed-off-by: Matthew Haddon <matthew.haddon@arm.com>
|
|
The avg_pool2d and max_pool2d operators trigger an error_if
statement if the output shape provided does not match the output
shape generated by the operation given the input arguments.
* Add pseudocode for floor operation
* Fixed type in RESCALE op
Signed-off-by: Matthew Haddon <matthew.haddon@arm.com>
Change-Id: I087faa331c30becc05719cd1261f436019dcdeb5
|
|
The TOSA specification doesn't have quantized types.
Without those types, it is cleaner to move effects of quantization
such as the zero points into the standard list of arguments, rather
than existing as a separate table.
Change-Id: I18ea2959e9d3e4a3e9a0ead7a8ca319bb4426a47
|
|
PAD now takes an additional attribute, with the padding value.
Will generally be zero, but other values are allowed.
tensor_read now requires the coordinates to be within the
given tensor, with unpredictable behavior occurring if an access
outside of the tensor occurs. Callers of tensor_read are expected
to check the coordinates and take the appropriate action. The
primary impact of this is to move the responsibility for padding to
each operator. In practice, this is expected to not be a functional
change, but a cleanup to make the behavior more clear.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I4f21ca9a13d82d422bbd66c400f23aa9a0bd2aa0
|
|
Use cases for BI/MI profiles show that the table argument
for the TABLE operator will be known at compile time. Make
it an attribute in that case. If a dynamic table is needed,
the GATHER op is available.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: Icb54eaa443ed7896d5010c7a30af88b02c8a83ad
|
|
Padding larger than the kernel size leads to the
odd effect where no values from the input tensor are used.
This leads to a divide by 0 in AVG_POOL2D, as it only divides
by the number of valid input values used, not padding.
Change MAX_POOL2D to have the same limitation for consistency.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I9cd0c0619f88f570d30c83053280460ae3d1cbfb
|
|
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I91098ef7e18d18263f7b909f75b9df4460417725
|
|
Catch zero and negative sized tensors.
Clarify configuration of bool_t in the reference model.
int4_t limitations on -8 to stay symmetric around 0.
Pad values must be >= 0.
Stride,dilation values must be >= 1.
Change-Id: Idb6ef740f855912a8340475ba319816f90c9b051
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Change-Id: Idcf4b99161ce05e56391fbc9107a19617cb1ad21
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
Make the input tensor shape dimensions correct for the pseudocode.
Clarify the count used for average pooling only includes
valid elements.
Remove stale reference to PLACEHOLDER nodes.
Change-Id: Ia0b9f0aa404008c6a36671da12188cb0999712d4
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I2e25d0467843adb078d5ab9fd681af40b2ffa52e
|
|
REQUIRE is a direct replacement for the asserts, and uses
the unpredictable() function in pseudocode to describe the required
conditions for operators
Change-Id: I35dc81e083d8e41f16728d992bdb8b06b0271226
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
X and Y dimensions of image limited
to 16-bit for integer data types so that
the position * stride calculations do not
overflow an int32_t (both position and stride
are then 16-bit)
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I24d15b1f2991a18da15493bef478d5ee9c65dba3
|
|
Name changed from DIV to INTDIV.
Usage clarified.
Change-Id: I493b8ace7a63e4c80caac1674c767c1ad468dd83
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
Signed-off-by: Suraj Sudhir <suraj.sudhir@arm.com>
Change-Id: I33bb90ccc778a5cd5fa3ece28880cf484d9f8e3c
|
|
The missing column prevented later rows
of arguments being rendered correctly in html
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: Ifa4edd38dc49f2ce6a182ec8cb44f8773a5bfa05
|
|
Clarify stride ranges so that the range of valid scales
is independent of the shift value.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I56b4dd3b39df19da35fb2c6fe3035e2de42f4860
|
|
The operation can be implemented directly
with CLAMP for int8, int16 or MIN,MAX
for int32.
Change-Id: I872ec5ee4ee30bb69353f39be12a65307c9b8d0a
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
Update copyright to include 2021.
Change-Id: Iced31530f7f86faa2efa95441bcbacf1c37f126f
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Integer divide is not commonly used, but would have been difficult to
implement using the existing operators.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I8fb3919cd7a0f1a1fa95074d921d200d23e2f249
|
|
It is challenging to work back from the RESCALE->TABLE->RESCALE
for a simple 8-bit lookup. This adds support to TOSA for a
simple direct 256 entry 8-bit lookup table for the TABLE operator.
The 16-bit interpolated table is still required for a conformant
implementation.
Change-Id: I0ef218444f0b57b880aa8d1c7e96efedae72eb53
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
This also adds a restriction on CONCAT to have all inputs be the
same rank.
Update the ARGMAX pseudocode to handle corner cases properly and
use axis/rank consistent with other operators.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I941ac172ee79424ac04d562cedebb75da76659a5
|
|
They are all now [source,c++] and use ---- as the
delimiter.
Also made the pseudocode indentation consistent (4 spaces)
in the introduction sections.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I1287a60cfeae8b7e3c63b9fc8885b1ebf3d3386d
|
|
When reading tensor values with zero point, the returned value
has one more bit than the original to account for zero point.
Update cases of apply_clip to properly represent the types
involved.
Change-Id: I60c17b1b244c34b4f04f042807936ae0f282ce93
|
|
Attempt to get consistent across the pseudocode.
Change the data types to all be intN_t instead of some cases of intN.
Use float_t as the general floating point data type.
Be consistent on use of the term "floating-point"
Move general pseudocode helpers to their own section.
Change-Id: Ie77666cd3ee438c71f39c62b9c424fe687b0bb51
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Originally only a pair of input tensors were allowed.
This aligns with what the frameworks do, and simplifies the
translation of frameworks into TOSA and allows compilers
to view the output as a whole.
Change-Id: Id4461abdf0cc763e84e086142222e87d28cd8afc
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Add batch dimension for consistency
with other operators.
Change-Id: I9b1734a1a60304f46a14a6cda1bd6be6678f1037
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
Add pseudo-code for the control flow operations
in terms of TOSA sub-graphs.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I1712e8297a0010a4e68a34df16fcbcf47fc41dd2
|
|
Elementwise operators no longer scale their inputs to a
common range. The elementwise introductory section reflected
the old behavior.
Also clear up some language on the unary functions.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I86bf9da8b51e9a64e4fe6766e01f0c35d43d805a
|
|
The aint8 type represented an asymmetrically quantized range.
With the change to move scaling fully into the RESCALE operator,
the aint8 and int8 types didn't have significant differences in
their use with operators. Unifying to a single data type makes
things simpler.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I3ee89cbdafdc61293ef1f1bec52398d744e716a1
|
|
This clarifies that repeated updates to the same
output index are not permitted in TOSA SCATTER.
Change-Id: Ib188a434d0d4ad4742ee37373491c8a53d501bf0
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
scale_t is already defined globally for the rescaling.
Move pseudocode for count_leading_zeros to introduction,
and use it in the implementation of CLZ.
Change-Id: I2453bce93b6dd25e870b8a010fc62af4c001cbf9
|
|
Profile for EXP operator
TANH table formatting
Remove dilation from TRANSPOSE_CONV2D
Change-Id: I2a265fecfb25ad997fdc992ad8542000014ac7c0
|
|
The new license grants the rights needed to create a completely independent
implementation of the specification.
Signed-off-by: Tom Cooksey <tom.cooksey@arm.com>
Change-Id: I1ca2cedf83c3f31df49096ecb6faaae060c3dc91
|
|
Bring the overview and goals up to date.
Incorporate a section on finding the source to the
spec and building it.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I8c862f8e58b01091d5561296702bcae83a8517e9
|
|
Try to make the different modes clearer, especially the
integer BILINEAR mode.
Change-Id: I6a2ab6ee4ed9e6a76d13bec4498e213a7f20b91f
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Add the scatter operation
to the gather/scatter section.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I9baaef91bf70eae3b13e6e585df6c4821a0c1a93
|
|
Add the operation code for GATHER
and reduce number of arguments.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I51b6ede43dcae1e1aec7a11a75a1e4bf6c668673
|
|
Add values attribute to CONST operator.
Remove stale references to input tensor 0 and 1.
Remove out_t types where in and out are guaranteed
to be the same type.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I75a8eb4dee67afbee3652d9e937aa0b82318dbd0
|
|
Was out_t, which wasn't in the data types table.
Switch to acc_t, the size of the accumulator, which
is the output type for the convolutions.
Also added some types into the pseudocode to clarify
what types variables are.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I210220199c2d39b16938094022339286df040545
|
|
Comparison ops, similar to the other elementwise ops, can operate
on tensors of any rank.
For those operators with rank limitations, make them consistent and
remove "dims".
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I33eb00122cec4c6625f080f9ed640f1d874fae87
|
|
Currently only enabled for the accumulator of a convolution and the
input to a RESCALE.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: Ic5474124b4a8735f12ef9c20c2be48e55767a3fc
|
|
Weights remain as an attribute for inference profile devices.
Change-Id: I1cdbbd2ccd95fc1b7afc0f05a1425fb53560b432
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Clarify how the TABLE operator can
be used in pratice to generate int8
to int8 and int16 to int16 lookup
operations.
Change-Id: I97154bb8cea46ab1fe48bf1cda615ff164130645
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
Add floating point as an allowed
data type for RESIZE.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I01766edabe922d395175356387ea325bfc301fd3
|
|
The result of 32x32 elementwise multiply
exceeds the int32_t result type range.
This change adds a right scaling shift
argument to shift down the result.
Change-Id: I6ae17e6dc3fe342d052304533158ad2d0e7bb7be
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
Add rounding mode to shift right and clarify
that shift values cannot be negative.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I7995c8dfa6f16f9ca4dcbf5241692fcd940e509b
|
|
Complete the function naming change from
dimensions() to rank(). Fix MATMUL to
use apply_add() for additions, consistent
with the other operations.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I6ba84cf8b016505e8477b04dd00f2a2bf3194492
|
|
rank() is consistent with the rest of the specification.
Also add a bit of whitespace in the pseudocode for easier
reading.
Fix one typo.
Change-Id: Ifa794b2c332cb70cd52a141d9af219e26bd3dca0
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Simplify the reduction and reverse reference
by apply one axis at a time and default to
keep_dims. (Changes to shape can be done
separately with RESHAPE)
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I590bdb6bc05b1c673f86e3f45f0a43536d8f362a
|