aboutsummaryrefslogtreecommitdiff
path: root/reference_model
diff options
context:
space:
mode:
authorDmitrii Agibov <dmitrii.agibov@arm.com>2023-09-21 11:05:58 +0100
committerDmitrii Agibov <dmitrii.agibov@arm.com>2023-09-25 14:28:43 +0100
commitc8fdccfa51a631a4d6df725a88d38d4679b2a439 (patch)
treec9e072a48089343ee3a8260f3ed2ec892edb8d1e /reference_model
parent99f8f9fb4cc93f089209772d7d1c3b45ca399437 (diff)
downloadreference_model-c8fdccfa51a631a4d6df725a88d38d4679b2a439.tar.gz
Pass parameter acc_size to AvgPool2d operator
Signed-off-by: Dmitrii Agibov <dmitrii.agibov@arm.com> Change-Id: I4cd818af0db5e6e8a96641246cd3263ba4878f56
Diffstat (limited to 'reference_model')
-rw-r--r--reference_model/include/operators.h1
-rw-r--r--reference_model/include/types.h7
-rw-r--r--reference_model/src/operators.cc18
-rw-r--r--reference_model/test/model_runner_tests.cpp4
4 files changed, 28 insertions, 2 deletions
diff --git a/reference_model/include/operators.h b/reference_model/include/operators.h
index 08da277..1399233 100644
--- a/reference_model/include/operators.h
+++ b/reference_model/include/operators.h
@@ -46,6 +46,7 @@ extern "C"
const int32_t client_kernel[2],
const int32_t client_stride[2],
const int32_t client_pad[4],
+ const tosa_acc_size_t client_acc_size,
const int32_t client_input_zp,
const int32_t client_output_zp,
tosa_tensor_t client_output,
diff --git a/reference_model/include/types.h b/reference_model/include/types.h
index 42040bf..a371d04 100644
--- a/reference_model/include/types.h
+++ b/reference_model/include/types.h
@@ -58,6 +58,13 @@ extern "C"
tosa_datatype_fp64_t = 99
};
+ enum tosa_acc_size_t
+ {
+ tosa_acc_size_int32_t = 0,
+ tosa_acc_size_fp16_t = 1,
+ tosa_acc_size_fp32_t = 2
+ };
+
struct tosa_tensor_t
{
const char* name;
diff --git a/reference_model/src/operators.cc b/reference_model/src/operators.cc
index 04eef2c..ecebe52 100644
--- a/reference_model/src/operators.cc
+++ b/reference_model/src/operators.cc
@@ -95,6 +95,21 @@ tosa::ResizeMode translate_client_tosa_mode(tosa_mode_t mode)
}
}
+tosa::DType translate_client_acc_size(tosa_acc_size_t acc_size)
+{
+ switch (acc_size)
+ {
+ case tosa_acc_size_int32_t:
+ return tosa::DType::DType_INT32;
+ case tosa_acc_size_fp16_t:
+ return tosa::DType::DType_FP16;
+ case tosa_acc_size_fp32_t:
+ return tosa::DType::DType_FP32;
+ default:
+ return tosa::DType::DType_UNKNOWN;
+ }
+}
+
} // namespace
extern "C"
@@ -138,6 +153,7 @@ extern "C"
const int32_t client_kernel[2],
const int32_t client_stride[2],
const int32_t client_pad[4],
+ const tosa_acc_size_t client_acc_size,
const int32_t client_input_zp,
const int32_t client_output_zp,
tosa_tensor_t client_output,
@@ -147,7 +163,7 @@ extern "C"
const std::vector<int32_t> pad(&client_pad[0], &client_pad[4]);
const std::vector<int32_t> kernel(&client_kernel[0], &client_kernel[2]);
const std::vector<int32_t> stride(&client_stride[0], &client_stride[2]);
- const tosa::DType accum_dtype = tosa::DType::DType_FP32;
+ const tosa::DType accum_dtype = translate_client_acc_size(client_acc_size);
TosaPoolAttribute attr(pad, kernel, stride, client_input_zp, client_output_zp, accum_dtype);
// Create tensors
diff --git a/reference_model/test/model_runner_tests.cpp b/reference_model/test/model_runner_tests.cpp
index 820ed63..7cf9d68 100644
--- a/reference_model/test/model_runner_tests.cpp
+++ b/reference_model/test/model_runner_tests.cpp
@@ -111,8 +111,10 @@ TEST_SUITE("model_runner")
output.data = reinterpret_cast<uint8_t*>(dstData.data());
output.size = dstData.size() * sizeof(float);
+ tosa_acc_size_t acc_size = tosa_acc_size_fp32_t;
+
// Execution
- auto status = tosa_run_avg_pool2d(input, kernel, stride, pad, 0, 0, output, {});
+ auto status = tosa_run_avg_pool2d(input, kernel, stride, pad, acc_size, 0, 0, output, {});
CHECK((status == tosa_status_valid));
// Compare results