aboutsummaryrefslogtreecommitdiff
path: root/chapters
AgeCommit message (Collapse)Author
3 daysMain conformance: update test set generatorsHEADmainDominic Symes
Update test set generator scaling factors so that different set values occur on calls to set_data() for each test S value. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I5651944b31476e264360c0fce17fc7a074ae425e
11 daysFix link to broadcast helpers in introductionThomas Preud'homme
Signed-off-by: Thomas Preud'homme <thomas.preudhomme@arm.com> Change-Id: Ia26ffc9eae21bccdd1b48277ab494f1bc1b744c3
2024-04-19Status update and text cleanupEric Kunze
Update the status section of the specification as well as various textual simplifications/clarifications. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Ie77039e537bc66e6d05b14c7e0705b1c1cc4be58
2024-04-19Add limit on size of tensor listsEric Kunze
List maximum varies by Level. Also cleans up some stray references to tosa_list_t. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I66ba807361948f0b679d0865f967fa2684f8b279
2024-04-19Define TOSA versioning and compatibilityEric Kunze
Defines the versioning policy for TOSA. Includes definition of what can change between minor versions to retain compatibility. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Iad6073c986acf1696c0880ef9f614ce6f5cf1f16
2024-04-18Clarify error bound for non-normal valuesEric Kunze
Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I9678952cc78cdf90272ccd5179b6220c293d62f7
2024-04-17Switch fp8 to use non-saturating mode when convertingEric Kunze
Implementations should use non-saturating mode and call CLAMP if saturation is needed. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I7a79931552dd6c3ab5fc247a963e3e7ba1e38ae2
2024-04-16Clarify wording on level definitionsEric Kunze
Level 1.0 was never defined. Update to note that the ranges are for the levels defined in the specification. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: If38a7d1d96efd41e6708537ea5a1577c4c48a4de
2024-04-12Remove Main Training profileEric Kunze
The Main Training profile does not have any unique operators in the specification. Remove it as unneeded. New training operators can be added as extensions to existing profiles. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Ida5f49a1c7f71276508da0484dff5fae2444b9fc
2024-04-12Move DIM to Shape operator sectionEric Kunze
Is more appropriate than the Data Layout section Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I5427d867b13a69dc0d66e268db4c64e047c65c7f
2024-04-05Main Conformance: Update SIN,COS error boundsDominic Symes
Large input values to SIN or COS can lead to proportionately large errors in the angle and so in the SIN or COS result. Change-Id: Ibc0d8f4f1db27b8c8855c48a238040442c14ef71 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2024-03-18Add a new rationale appendixEric Kunze
This appendix attempts to record the rationale for decisions made when modifying the TOSA specification. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Ia2332d39c075a53f611665c446566bd89385b9fb
2024-03-14Tighten ARGMAX definitionEric Kunze
Define behavior if multiple values are tied for the maximum. Define behavior if NaN values are encountered. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Id05a680cd11a331ba84a8e38f9a7c77a71bcbb78
2024-03-13Modify convolution operators to improve bias handlingEric Kunze
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
2024-03-12Modify TOSA profilesEric Kunze
Create composable profiles and profile extensions. Define requirements for a TOSA implementation to fully implement at least one profile. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I02cfb0171b2d227727f530cb29108b479206b25b
2024-03-06Fix SIN and COS pseudocode inclusionEric Kunze
Previous version accidentally included the copyright in the rendered document. Also made the operator organization match other operators. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Iabca81fb84d032f17b6915a3c5135cb469edd797
2024-02-23Accuracy requirements for RESIZE operatorEric Kunze
Initial accuracy requirements for RESIZE calculations. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I44f997df857915ca77b04dd0b87dee9ccac6e7b0
2024-02-14Add SIN/COS to elementwise operator setEric Kunze
Only defined for floating-point types. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Ieae355076f9aac6882fab8530e6d7d9985a6e661
2024-02-14Initial FP8 supportEric Kunze
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
2024-02-14FFT, RFFT: Improve reference pseudo-codeDominic Symes
Add types for the angle caclulations. Add conformance appendix section for RFFT2D. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: Ic0ab79c0784c6359d2d66290e124dfb670a879cc
2024-02-09Main Conformance: Update POW error boundDominic Symes
Update POW error bound to allow for the error of a LOG, MUL, EXP sequence. Change-Id: I250635130bce2ac72cc39a9c9052d8e868f7cf41 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2024-02-06pseudocode: move all helpers to separate filesKevin Petit
Change-Id: I75ea94d42c63e862af8e492da7f47ecd6caa1055 Signed-off-by: Kevin Petit <kevin.petit@arm.com>
2024-01-31Add section of shape operatorsv0.90.0Eric Kunze
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
2024-01-28Add missing pseudocode for CONST, CUSTOM, ERF, and IDENTITY operatorsKevin Petit
Signed-off-by: Kevin Petit <kevin.petit@arm.com> Change-Id: Icb824233e5be84ac0eb693459b65441e9ae6c545
2024-01-25Handle CAST from fp-type to narrow integer typesEric Kunze
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
2024-01-23pseudocode: use true/false consistently for boolean valuesKevin Petit
- Some operators were using True and False. - Document the use of true and false in the definition of the boolean number format. Signed-off-by: Kevin Petit <kevin.petit@arm.com> Change-Id: Ic4c16c8527d46ca01d22e3c70c5371821a726df8
2024-01-15Move operator pseudocode to separate filesKevin Petit
This makes it easier to process the pseudocode automatically. Change-Id: I84394192598e589de07d43a7af60b96788e14f86 Signed-off-by: Kevin Petit <kevin.petit@arm.com>
2024-01-15Main Conformance: TANH change, SCATTER clarificationDominic Symes
TANH can have cancellation between exp(x) and exp(-x) for small abs(x). To allow for this, a lower bound of 0.5*exp(-normal_fraction<in_out_t>) is set for the error bound. The TANH formula also can contain 4 exp() values, so the error bound is increased to 4 multiplied by the exp() error bound. SCATTER output size K must be as least as great as the number of indices W, as each index is distinct. Change-Id: I8d1f1c866bd59d8140cf7db76404f5006a04a3f3 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2024-01-09Fix typo in i48_t descriptionEric Kunze
i48_t is 48-bit, not 32-bit. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Icd602931ffb5d74842359fae2a8885e96b85bf59
2024-01-09Main Conformance: Clarify REDUCE_PRODUCT conformanceDominic Symes
Update the REDUCE_PRODUCT conformance description to be consistent with EXP, POW, TANH, SIGMOID. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I083c41ce09e70b51d07cfea30a4bbc4dff4a8657
2024-01-08Add note to POW accuracyEric Kunze
Cannot raise a negative base to a non-integral power. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I851006abc30bccb612b2a41e27f5c259bb221e41
2023-12-04Main Conformance: Update SIGMOID, TANH precisionDominic Symes
Change SIGMOID, TANH precision to allow an implementation using EXP. The bound is based on the EXP bound. Change-Id: I19582b31753ac614a1064a1b81961dbc54acf823 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2023-11-28REDUCE_SUM: Specify the accumulator typeDominic Symes
For bf16_t data type, REDUCE_SUM is changed to use fp32_t as the accumulator type to be consistent with CONV2D. For other data types the accumulator type is the same as in_out_t (and so no change). Also correct the rank limit text. Update reduction pseudo-code to be consistent with REDUCE_SUM. Change-Id: I9923066be7d1b7edb0efd9bcf3365b4af9501beb Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2023-11-22Main Conformance: Update RSQRT precisionDominic Symes
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>
2023-11-02Fix CustomOp description textJerry Ge
- CustomOp's domain attribute name has been updated to domain_name - Forget to update that for the description text part. Signed-off-by: Jerry Ge <jerry.ge@arm.com> Change-Id: Ifa731125dc2f224ecc1cd661e238c7b27945db68
2023-11-01Main Conformance: Update EXP, POW precisionDominic Symes
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
2023-10-09Main conformance: clarify floating point accuracyDominic Symes
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
2023-09-26Define missing accuracy boundsEric Kunze
REDUCE_MIN, REDUCE_MAX, SELECT did not have an accuracy bound defined. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I0fea091752dfcdc2bb55eae7becc68b9c1860e9e
2023-09-21TRANSPOSE_CONV2D: Remove redundant out_shape argumentDominic Symes
The output shape can be calculated from the input shape and attributes so the out_shape argument is redundant. Change-Id: I7e6b0b7f03dc75ccdf967261fad4185c513ed187 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2023-09-12Main Conformance: Add local_bound to RFFT2DDominic Symes
Also express the fp32_t acc_min_normal calculation without a double negation. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I34ba274264bc511e60f0e01601d5d0a3f983e594
2023-09-11Add integer divide with floor for coordinate calculationEric Kunze
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>
2023-09-07Main Conformance: Update dot product error boundv0.90a0Dominic Symes
Update the error bound for dot product operations to allow floating point accumulators where denormal values are flushed to zero. Change-Id: I1d5805f0ad613ca9d78c6a6da12e31d7df5f6cc4 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2023-08-18Update Custom operator argumentsEric Kunze
CUSTOM operators are still implementation specific, but now have attributes added to identify and namespace the underyling operation. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I8db2fffd0b34958bd8c718633a130941f32f962b
2023-08-17Change TOSA specification to signless typesEric Kunze
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
2023-08-16Main conformance: Add local bound flag for convolutionsDominic Symes
Adds a local_bound flag to convolution operations. If the local_bound flag is true then the output accuracy for floating-point is measured relative to the input tensor data local to the particular convolution output. If the local_bound flag is false then the output accuracy for floating-point is measured relative to the whole input tensor. This accuracy measure is the default and more approapriate for implementations with non local optimizations (such as transform based fast convolutions). Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I64e3e4981a63e26e6391149e28d5d71e7ef5560a
2023-08-16Add DIM operator and operations on shape_t valuesDominic Symes
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
2023-08-11Add StatefulOps to TOSA specificationJerry Ge
Signed-off-by: Jerry Ge <jerry.ge@arm.com> Change-Id: I63a4c1202a1eddcdedb222e64cac34557647ff21
2023-08-07Allow bias tensors to be broadcastDominic Symes
Bias tensors often have the same value for each channel. To allow for this the number of bias channels, BC, is permitted to be 1 or the output channel size. If BC == 1 then the bias is broadcast. Change-Id: I3262a6c699bd045f44201e2a123f9b792b9f67c9 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2023-07-24COND_IF/WHILE_LOOP: Add nesting level limitDominic Symes
Nesting of if/while is bounded by MAX_NESTING, set accoring to the TOSA level. Change-Id: If9435a143ffa6bd7ba2e46a68542459b3d723b76 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2023-07-06AVG_POOL2D conformance: fix kernel size namesDominic Symes
Change-Id: I188694080b74ec81c6dea675430e29db11ee6079 Signed-off-by: Dominic Symes <dominic.symes@arm.com>