diff options
author | Tai Ly <tai.ly@arm.com> | 2023-03-28 22:06:56 +0000 |
---|---|---|
committer | Tai Ly <tai.ly@arm.com> | 2023-05-05 19:23:15 +0000 |
commit | a4d748b08accce06fab93e2d2b96e499b35ae89b (patch) | |
tree | 20a3957e1f45f65f35d5d67ecce1618659e388f0 /reference_model/src/ops/reduction.h | |
parent | 0c71686875618b2e11290273b7a05b88ef8a8aae (diff) | |
download | reference_model-a4d748b08accce06fab93e2d2b96e499b35ae89b.tar.gz |
[reference model] Add precise mode
This adds --precise_mode=1 option to tosa_referece_model,
which will cause reference model to convert all floating point tensors
to FP64 tensors and compute all operators accordingly.
Also adds optional -p arguments to test runners tosa_verif_run_tests.py
and tosa_verif_framework_compiler_runner.py to run tests in precise mode
Signed-off-by: Tai Ly <tai.ly@arm.com>
Change-Id: I156055216ad61710096497a8fa1a653be2a602a3
Diffstat (limited to 'reference_model/src/ops/reduction.h')
-rw-r--r-- | reference_model/src/ops/reduction.h | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/reference_model/src/ops/reduction.h b/reference_model/src/ops/reduction.h index 6e98a76..aeb9f1d 100644 --- a/reference_model/src/ops/reduction.h +++ b/reference_model/src/ops/reduction.h @@ -1,5 +1,5 @@ -// Copyright (c) 2020, ARM Limited. +// Copyright (c) 2020-2023, ARM Limited. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ using namespace tosa; namespace TosaReference { -template <int Rank, DType Dtype> +template <int Rank, TOSA_REF_TYPE Dtype> class ReduceNode : public GraphNode { public: @@ -44,7 +44,7 @@ protected: TosaAxisAttribute* attribute; }; -template <int Rank, DType Dtype> +template <int Rank, TOSA_REF_TYPE Dtype> class OpReduceAll : public ReduceNode<Rank, Dtype> { public: @@ -54,7 +54,7 @@ public: virtual int eval(); }; -template <int Rank, DType Dtype> +template <int Rank, TOSA_REF_TYPE Dtype> class OpReduceAny : public ReduceNode<Rank, Dtype> { public: @@ -64,7 +64,7 @@ public: virtual int eval(); }; -template <int Rank, DType Dtype> +template <int Rank, TOSA_REF_TYPE Dtype> class OpReduceMax : public ReduceNode<Rank, Dtype> { public: @@ -74,7 +74,7 @@ public: virtual int eval(); }; -template <int Rank, DType Dtype> +template <int Rank, TOSA_REF_TYPE Dtype> class OpReduceMin : public ReduceNode<Rank, Dtype> { public: @@ -84,7 +84,7 @@ public: virtual int eval(); }; -template <int Rank, DType Dtype> +template <int Rank, TOSA_REF_TYPE Dtype> class OpReduceProduct : public ReduceNode<Rank, Dtype> { public: @@ -94,7 +94,17 @@ public: virtual int eval(); }; -template <int Rank, DType Dtype> +template <int Rank, TOSA_REF_TYPE Dtype> +class OpReduceProductDouble : public ReduceNode<Rank, Dtype> +{ +public: + OpReduceProductDouble(SubgraphTraverser* sgt_, TosaAttributeBase* attribute_, uint64_t id_) + : ReduceNode<Rank, Dtype>(sgt_, Op_REDUCE_PRODUCT, attribute_, id_) + {} + virtual int eval(); +}; + +template <int Rank, TOSA_REF_TYPE Dtype> class OpReduceSum : public ReduceNode<Rank, Dtype> { public: @@ -104,7 +114,7 @@ public: virtual int eval(); }; -template <int Rank, DType Dtype> +template <int Rank, TOSA_REF_TYPE Dtype> class OpReduceSumInt : public ReduceNode<Rank, Dtype> { public: @@ -114,6 +124,16 @@ public: virtual int eval(); }; +template <int Rank, TOSA_REF_TYPE Dtype> +class OpReduceSumDouble : public ReduceNode<Rank, Dtype> +{ +public: + OpReduceSumDouble(SubgraphTraverser* sgt_, TosaAttributeBase* attribute_, uint64_t id_) + : ReduceNode<Rank, Dtype>(sgt_, Op_REDUCE_SUM, attribute_, id_) + {} + virtual int eval(); +}; + }; // namespace TosaReference #endif |