aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichalis Spyrou <michalis.spyrou@arm.com>2020-02-07 15:25:17 +0000
committerMichalis Spyrou <michalis.spyrou@arm.com>2020-02-07 17:17:18 +0000
commit9bd49f979907fdef82a50f64a486c5d69df7ae39 (patch)
tree97782d8130314068cd96d6a3a6c499ea7ed2f4f0
parent2f60221e60b69852918581b4eb450a0f81455a46 (diff)
downloadComputeLibrary-9bd49f979907fdef82a50f64a486c5d69df7ae39.tar.gz
COMPMID-2838: Add support for QASYMM8 production reduce operation to CL
Change-Id: I3e642ea0bffca038a697b8cfb5db38e337876edc Signed-off-by: Michalis Spyrou <michalis.spyrou@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2703 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
-rw-r--r--src/core/CL/kernels/CLReductionOperationKernel.cpp2
-rw-r--r--tests/validation/CL/ReductionOperation.cpp26
2 files changed, 25 insertions, 3 deletions
diff --git a/src/core/CL/kernels/CLReductionOperationKernel.cpp b/src/core/CL/kernels/CLReductionOperationKernel.cpp
index a2a5f2be6d..ff824fce33 100644
--- a/src/core/CL/kernels/CLReductionOperationKernel.cpp
+++ b/src/core/CL/kernels/CLReductionOperationKernel.cpp
@@ -152,7 +152,7 @@ void CLReductionOperationKernel::configure(const ICLTensor *input, ICLTensor *ou
if(is_data_type_quantized(data_type))
{
- data_type_promoted = get_cl_dot8_acc_type_from_data_type(data_type);
+ data_type_promoted = "int";
}
else
{
diff --git a/tests/validation/CL/ReductionOperation.cpp b/tests/validation/CL/ReductionOperation.cpp
index 8ec3eb208f..b013af15d1 100644
--- a/tests/validation/CL/ReductionOperation.cpp
+++ b/tests/validation/CL/ReductionOperation.cpp
@@ -118,7 +118,8 @@ FIXTURE_DATA_TEST_CASE(RunSmall4D, CLReductionOperationFixture<half>, framework:
}
FIXTURE_DATA_TEST_CASE(RunLarge, CLReductionOperationFixture<half>, framework::DatasetMode::NIGHTLY,
combine(combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", DataType::F16)), framework::dataset::make("Axis", { 0, 1, 2, 3 })), concat(ReductionOperationsSumProd,
- ReductionOperationsMinMax)), KeepDimensions))
+ ReductionOperationsMinMax)),
+ KeepDimensions))
{
// Validate output
validate(CLAccessor(_target), _reference, rel_tolerance_f16, 0, tolerance_f16);
@@ -135,7 +136,8 @@ FIXTURE_DATA_TEST_CASE(RunSmall4D, CLReductionOperationFixture<float>, framework
}
FIXTURE_DATA_TEST_CASE(RunLarge, CLReductionOperationFixture<float>, framework::DatasetMode::NIGHTLY,
combine(combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", DataType::F32)), framework::dataset::make("Axis", { 0, 1, 2, 3 })), concat(ReductionOperationsSumProd,
- ReductionOperationsMinMax)), KeepDimensions))
+ ReductionOperationsMinMax)),
+ KeepDimensions))
{
// Validate output
validate(CLAccessor(_target), _reference, rel_tolerance_f32, 0, tolerance_f32);
@@ -147,6 +149,26 @@ template <typename T>
using CLReductionOperationQuantizedFixture = ReductionOperationQuantizedFixture<CLTensor, CLAccessor, CLReductionOperation, T>;
TEST_SUITE(Quantized)
+TEST_SUITE(QASYMM8)
+FIXTURE_DATA_TEST_CASE(RunSmall, CLReductionOperationQuantizedFixture<uint8_t>, framework::DatasetMode::ALL,
+ combine(combine(combine(combine(combine(datasets::Small4DShapes(), framework::dataset::make("DataType", DataType::QASYMM8)), framework::dataset::make("Axis", { 0, 1, 2, 3 })),
+ ReductionOperationsSumProd),
+ framework::dataset::make("QuantizationInfo", QuantizationInfo(1.f / 64, 2))),
+ KeepDimensions))
+{
+ // Validate output
+ validate(CLAccessor(_target), _reference, tolerance_qasymm8);
+}
+FIXTURE_DATA_TEST_CASE(RunSmallMinMax, CLReductionOperationQuantizedFixture<uint8_t>, framework::DatasetMode::ALL,
+ combine(combine(combine(combine(combine(datasets::Small4DShapes(), framework::dataset::make("DataType", DataType::QASYMM8)), framework::dataset::make("Axis", { 0, 1, 2, 3 })),
+ ReductionOperationsMinMax),
+ framework::dataset::make("QuantizationInfo", QuantizationInfo(1.f / 64, 2))),
+ KeepDimensions))
+{
+ // Validate output
+ validate(CLAccessor(_target), _reference);
+}
+TEST_SUITE_END() // QASYMM8
TEST_SUITE(QASYMM8_SIGNED)
FIXTURE_DATA_TEST_CASE(RunSmall, CLReductionOperationQuantizedFixture<int8_t>, framework::DatasetMode::ALL,
combine(combine(combine(combine(combine(datasets::Small4DShapes(), framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)), framework::dataset::make("Axis", { 0, 1, 2, 3 })),