aboutsummaryrefslogtreecommitdiff
path: root/reference_model/src/ops/reduction.h
diff options
context:
space:
mode:
authorTai Ly <tai.ly@arm.com>2023-03-28 22:06:56 +0000
committerTai Ly <tai.ly@arm.com>2023-05-05 19:23:15 +0000
commita4d748b08accce06fab93e2d2b96e499b35ae89b (patch)
tree20a3957e1f45f65f35d5d67ecce1618659e388f0 /reference_model/src/ops/reduction.h
parent0c71686875618b2e11290273b7a05b88ef8a8aae (diff)
downloadreference_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.h38
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