From 9bd49f979907fdef82a50f64a486c5d69df7ae39 Mon Sep 17 00:00:00 2001 From: Michalis Spyrou Date: Fri, 7 Feb 2020 15:25:17 +0000 Subject: COMPMID-2838: Add support for QASYMM8 production reduce operation to CL Change-Id: I3e642ea0bffca038a697b8cfb5db38e337876edc Signed-off-by: Michalis Spyrou Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2703 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio --- src/core/CL/kernels/CLReductionOperationKernel.cpp | 2 +- tests/validation/CL/ReductionOperation.cpp | 26 ++++++++++++++++++++-- 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, framework: } FIXTURE_DATA_TEST_CASE(RunLarge, CLReductionOperationFixture, 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, framework } FIXTURE_DATA_TEST_CASE(RunLarge, CLReductionOperationFixture, 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 using CLReductionOperationQuantizedFixture = ReductionOperationQuantizedFixture; TEST_SUITE(Quantized) +TEST_SUITE(QASYMM8) +FIXTURE_DATA_TEST_CASE(RunSmall, CLReductionOperationQuantizedFixture, 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, 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, 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 })), -- cgit v1.2.1