Age | Commit message (Collapse) | Author |
|
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
|
|
Change-Id: I75ea94d42c63e862af8e492da7f47ecd6caa1055
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
|
|
Rework of the shape operations. Shape operations are now done in shape specific
operators rather than being based on type.
shape_t is reworked to a list of size_t values.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I2fca0728f9caa6a6fc34a8ce9e389bb581eea959
|
|
Be explicit that the value is converted to int32 and then clamped to the
output type range.
Also remove use of apply_clip, replacing with either apply_clip_s or apply_clip_u
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I0efc7f4d653c1bef13c9989cfe2647208dad9617
|
|
Change RSQRT precision to 2 ulp to allow
unfused square root and reciprocal.
Also fixes:
- a typo in EXP and POW conformance
- exp2() handling of large negative values
- symmetry about 0 of test set S=4 data generation
- err_bnd cannot be negative
- ulp not taken for reference value of 0
Change-Id: Idaeeb7b615f1634e8e09dea5f82827039780b462
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
EXP and POW are complex to implement in a precise number of ulp
and a more flexible precision is given.
Additionally, the test generater S=5 has the bias values
changed to zero. If the bias values are non-zero then a
bias for all output tensor elements of the channel can affect
the dot product bias test.
The numeric accuracy helpers are updated for bf16.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: Ia46a2ef4d577244b6983a08ce850de3db9573a42
|
|
Clarify how to compare with an error range of a given
number of ulp in this specification. Denormals may be
flushed to zero.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I1158e777030c4770d74f1acff84ab98e4a3420ac
|
|
Define idiv_floor to give equivalent behavior to the floating-point
floor function for image coordinate calculation.
Change-Id: Id6268794b1e3ce5cc1114bda74dd06b892457a8e
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Integer inputs and outputs to TOSA operators are now defined as signless
values. In most instances the operator will used signed arithmetic as
indicated in previous versions of the specification resulting in little
functional change to the specification.
New attributes have been added to the RESCALE operator to indicate
whether the input and output values should be treated as signed or unsigned.
Explicit use of static_cast, sign_extend, zero_extend and truncate are added
to the pseudocode to avoid ambiguity.
Change-Id: I71c67d3e5aeaabc418c768f821fce6ee3eebb65b
|
|
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
|
|
Signed-off-by: Jerry Ge <jerry.ge@arm.com>
Change-Id: I63a4c1202a1eddcdedb222e64cac34557647ff21
|
|
Also replace all instances of "co-ordinate" with "coordinate" for
consistency.
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
Change-Id: Idff73092711d3ff85bf4db33df92924c754cf451
|
|
For an operation that performs broadcast the
output shape size must be the maximum of the input shape
sizes in each dimension.
Additionally, the input dimension size must be 1 whenever
an input shape does not match the output shape size
in a dimension.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I89492f4ef22da76f84f12e720c79634ea42545bc
|
|
This patch contains a draft of the
Main Inference profile floating-point
conformance requirements.
Change-Id: Ib1201fff7f4015668b2de6dccf4cd85b419c3f76
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
|
|
Add definition of Level 1.0.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I1b34ae22396f273cc5ecdf99198fdbece6e2809c
|
|
Tensor co-ordinate indices are signed 32-bit values
in this version of the specification.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: I6b8dde500ef9c4c4c5688c1a43f8d658863e4a49
|
|
Define operations in terms of common floating-point data
types. Definitions for the data types are in the introduction.
Added a section to describe status of the different profiles.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: Iac57026806acfb7913f40af61176322fb02b7cc1
|
|
The information on quantization and numerics was out of date.
The tensor access helpers were also consolidated and moved into
their own section in the pseudocode chapter.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I472e674ed88f4a3ef379010cf50b13cf8afa5f17
|
|
Adds FFT2D for complex->complex FFT
Adds RFFT2D for real->complex FFT
Change-Id: Id50f96b8f66f17c3020767c002f0c1f41a76d62e
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Remove the calculation of a -1 dimension from the operator.
Calculates the new coordinates, and adds the proper
tensor_read/tensor_write for the data.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: Iad1d83c170732bdfb3652dead9044809168b23d2
|
|
Clarify for types previously definded as int
the width assumed by the specification.
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: Ied62d4803a4323a600d33cff09752a76ca48f18d
|
|
For each tensor op clarify how the output dimensions
of output height (OH) and output width (OW) relate
to the input height (IH) and input width (IW).
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
Change-Id: Iad36041f54e439c944cacf08afac5567dd2bad3f
|
|
Cover cases where NaN, +/- 0, +/- infinity are involved
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: I1a5a23c7b856ddb997f7cdc00282420294ef3e6d
|
|
We can't easily spell check the entire specification, the
pseudocode and operator tables make it unworkable. This
adds a simple python script that tries to extract just the
description of the operators for checking. It also does a check
over the entire license.
A custom dictionary is used to contain specification custom words.
Change-Id: I74558c03af1506e2970f20b3246d920c2753ca44
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
|
|
Avoid use of acc for variables when they are not convolution
accumulators.
Use argument types appropriately.
Add missing pseudocode for some MI operators
Change-Id: I9113f9228dbcafb85206bcc39310e9599cb12c08
|
|
* Add ERROR_IF checks to ensure that inputs have the correct rank,
dimension lengths, and a suitable axis value
* Make REVERSE REQUIRES check into an ERROR_IF
* Some minor typo/formatting fixes
Change-Id: Ie133788ca7e1deab194ba5ef97e47c39cdd170b6
Signed-off-by: Matthew Haddon <matthew.haddon@arm.com>
|
|
* 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
|
|
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>
|
|
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>
|