From 8754ec288dc491f3a9e936e68a1fd35783c9808e Mon Sep 17 00:00:00 2001 From: Dominic Symes Date: Fri, 8 Dec 2023 17:45:31 +0000 Subject: Main Conformance: TANH change, SCATTER clarification 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) 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 --- chapters/introduction.adoc | 8 +++++++- chapters/scatter_gather.adoc | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/chapters/introduction.adoc b/chapters/introduction.adoc index 11ba26b..dc45808 100644 --- a/chapters/introduction.adoc +++ b/chapters/introduction.adoc @@ -281,12 +281,18 @@ Let `out_ref` be the result of the fp64_t reference implementation of `pow(x,y)` Let `err_bnd = abs(out_ref) * exp2(-normal_frac) * (1+abs(log(abs(x))*y))` + Then `tosa_reference_check_fp_bnd(out_imp, out_ref, err_bnd)` must be true -| <>, <> +| <> | Let `x` be an input element and `out_imp` the implementation output. + Let `out_ref` be the result of the fp64_t reference implementation. + Let `err_bnd = abs(out_ref) * exp2(-normal_frac) * (2 * (1+abs(x)))` + Then `tosa_reference_check_fp_bnd(out_imp, out_ref, err_bnd)` must be true +| <> +| Let `x` be an input element and `out_imp` the implementation output. + +Let `out_ref` be the result of the fp64_t reference implementation. + +Let `err_bnd = exp2(-normal_frac) * max(0.5, abs(out_ref) * (4 * (1+abs(x))))` + +Then `tosa_reference_check_fp_bnd(out_imp, out_ref, err_bnd)` must be true + | <> | Each output can be expressed as a dot product of an input vector with a vector of ones. + This dot product must meet the <> diff --git a/chapters/scatter_gather.adoc b/chapters/scatter_gather.adoc index 1dbda4f..d694d39 100644 --- a/chapters/scatter_gather.adoc +++ b/chapters/scatter_gather.adoc @@ -31,6 +31,7 @@ for_each(0 <= n < N, 0 <= w < W, 0 <= c < C) { The values_out tensor is set to the values_in tensor with data modified as follows: data from the input tensor is inserted at the positions specified by the indices tensor. N is the number of batches, W the number of indices in each batch, K the range of each index and C the number data channels for each index. It is not permitted to repeat the same output index within a single SCATTER operation and so each output index occurs at most once. +It follows that K >= W. In use cases that require multiple updates to the same output position, these must be decomposed into multiple SCATTER operations. include::{generated}/operators/SCATTER.adoc[] -- cgit v1.2.1