diff options
author | Teresa Charlin <teresa.charlinreyes@arm.com> | 2021-08-05 12:34:37 +0100 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2021-09-03 08:41:21 +0000 |
commit | 4e3e831da1d6d85dffffacf57e9de8fc891b7e58 (patch) | |
tree | 9a3653729feba788dcfbbdc5255ad379cbbf597d /delegate/src | |
parent | 14bef9f83f7cd58e5038ae7432d75da2d50e7b68 (diff) | |
download | armnn-4e3e831da1d6d85dffffacf57e9de8fc891b7e58.tar.gz |
IVGCVSW-6262 Add support for Reduce Prod
* Tflite parser
* Tflite delegate
* Serializer
* Deserializer
* Ref, CpuAcc and GpuAcc workloads
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I601a9ee1680b372c7955d9a628857d08c3cfd377
Diffstat (limited to 'delegate/src')
-rw-r--r-- | delegate/src/Reduce.hpp | 4 | ||||
-rw-r--r-- | delegate/src/armnn_delegate.cpp | 6 | ||||
-rw-r--r-- | delegate/src/test/ReduceTest.cpp | 69 |
3 files changed, 79 insertions, 0 deletions
diff --git a/delegate/src/Reduce.hpp b/delegate/src/Reduce.hpp index 13a11d3e61..bcea16fdb0 100644 --- a/delegate/src/Reduce.hpp +++ b/delegate/src/Reduce.hpp @@ -91,6 +91,10 @@ TfLiteStatus VisitReduceOperator(DelegateData& delegateData, { desc.m_ReduceOperation = armnn::ReduceOperation::Sum; } + else if (reduceOperatorCode == kTfLiteBuiltinReduceProd) + { + desc.m_ReduceOperation = armnn::ReduceOperation::Prod; + } else { TF_LITE_MAYBE_KERNEL_LOG( diff --git a/delegate/src/armnn_delegate.cpp b/delegate/src/armnn_delegate.cpp index d3ccecb444..f13bb5779c 100644 --- a/delegate/src/armnn_delegate.cpp +++ b/delegate/src/armnn_delegate.cpp @@ -765,6 +765,12 @@ TfLiteStatus ArmnnSubgraph::VisitNode(DelegateData& delegateData, tfLiteNode, nodeIndex, kTfLiteBuiltinReduceMin); + case kTfLiteBuiltinReduceProd: + return VisitReduceOperator(delegateData, + tfLiteContext, + tfLiteNode, + nodeIndex, + kTfLiteBuiltinReduceProd); case kTfLiteBuiltinRelu: return VisitActivationOperator(delegateData, tfLiteContext, diff --git a/delegate/src/test/ReduceTest.cpp b/delegate/src/test/ReduceTest.cpp index 49608b6a2c..5dd33562e6 100644 --- a/delegate/src/test/ReduceTest.cpp +++ b/delegate/src/test/ReduceTest.cpp @@ -350,5 +350,74 @@ TEST_CASE ("Sum_Fp32_GpuAcc_Test") } // End of Sum_GpuAccTests +// PROD Tests +TEST_SUITE("Prod_CpuRefTests") +{ + +TEST_CASE ("Prod_Uint8_KeepDims_CpuRef_Test") +{ + std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef}; + std::vector<uint8_t> expectedOutputValues { 4, 6, 3 }; + ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_PROD, + backends, + expectedOutputValues); +} + +TEST_CASE ("Prod_Fp32_CpuRef_Test") +{ + std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef}; + std::vector<float> expectedOutputValues { 10010.0f, 11022.0f, 12036.0f }; + ReduceFp32Test(tflite::BuiltinOperator_REDUCE_PROD, + backends, + expectedOutputValues); +} + +} // End of Prod_CpuRefTests + +TEST_SUITE("Prod_CpuAccTests") +{ + +TEST_CASE ("Prod_Uint8_KeepDims_CpuAcc_Test") +{ + std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc}; + std::vector<uint8_t> expectedOutputValues { 4, 6, 3 }; + ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_PROD, + backends, + expectedOutputValues); +} + +TEST_CASE ("Prod_Fp32_CpuAcc_Test") +{ + std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc}; + std::vector<float> expectedOutputValues { 10010.0f, 11022.0f, 12036.0f }; + ReduceFp32Test(tflite::BuiltinOperator_REDUCE_PROD, + backends, + expectedOutputValues); +} + +} // End of Prod_CpuAccTests + +TEST_SUITE("Prod_GpuAccTests") +{ + +TEST_CASE ("Prod_Uint8_KeepDims_GpuAcc_Test") +{ + std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc}; + std::vector<uint8_t> expectedOutputValues { 4, 6, 3 }; + ReduceUint8KeepDimsTest(tflite::BuiltinOperator_REDUCE_PROD, + backends, + expectedOutputValues); +} + +TEST_CASE ("Prod_Fp32_GpuAcc_Test") +{ + std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc}; + std::vector<float> expectedOutputValues { 10010.0f, 11022.0f, 12036.0f }; + ReduceFp32Test(tflite::BuiltinOperator_REDUCE_PROD, + backends, + expectedOutputValues); +} + +} // End of Prod_GpuAccTests } // namespace armnnDelegate
\ No newline at end of file |