From ee5872d95455351458ad4373176360200594daa1 Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Fri, 3 Dec 2021 16:07:42 +0000 Subject: IVGCVSW-3809 Refactor Elementwise Binary ops to use ElementwiseBinaryLayer !armnn:9319 * Refactored all functions to convert Add, Div, Maximum, Minimum, Mul and Sub to use ElementwiseBinary layers instead. Signed-off-by: Teresa Charlin Signed-off-by: Mike Kelly Change-Id: Ic05885cd8692e7f1b7032862fb4a395af70e0bcd Signed-off-by: Mike Kelly Change-Id: If9717d6ab236d97c76f6cd39b96bde86c81e4382 --- 1.3/HalPolicy.cpp | 53 +++++++++++++---------------------------------------- 1.3/HalPolicy.hpp | 17 +++++------------ 2 files changed, 18 insertions(+), 52 deletions(-) (limited to '1.3') diff --git a/1.3/HalPolicy.cpp b/1.3/HalPolicy.cpp index 5563e806..16b325ba 100644 --- a/1.3/HalPolicy.cpp +++ b/1.3/HalPolicy.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2020 Arm Ltd. All rights reserved. +// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -24,7 +24,7 @@ bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, case V1_3::OperationType::ABS: return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Abs); case V1_3::OperationType::ADD: - return ConvertAdd(operation, model, data); + return ConvertElementwiseBinary(operation, model, data, BinaryOperation::Add); case V1_3::OperationType::ARGMAX: return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Max); case V1_3::OperationType::ARGMIN: @@ -48,7 +48,7 @@ bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, case V1_3::OperationType::DEQUANTIZE: return ConvertDequantize(operation, model, data); case V1_3::OperationType::DIV: - return ConvertDiv(operation, model, data); + return ConvertElementwiseBinary(operation, model, data, BinaryOperation::Div); case V1_3::OperationType::ELU: return ConvertElu(operation, model, data); case V1_3::OperationType::EQUAL: @@ -102,13 +102,13 @@ bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, case V1_3::OperationType::MAX_POOL_2D: return ConvertMaxPool2d(operation, model, data); case V1_3::OperationType::MAXIMUM: - return ConvertMaximum(operation, model, data); + return ConvertElementwiseBinary(operation, model, data, BinaryOperation::Maximum); case V1_3::OperationType::MEAN: return ConvertMean(operation, model, data); case V1_3::OperationType::MINIMUM: - return ConvertMinimum(operation, model, data); + return ConvertElementwiseBinary(operation, model, data, BinaryOperation::Minimum); case V1_3::OperationType::MUL: - return ConvertMul(operation, model, data); + return ConvertElementwiseBinary(operation, model, data, BinaryOperation::Mul); case V1_3::OperationType::NEG: return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg); case V1_3::OperationType::NOT_EQUAL: @@ -164,7 +164,7 @@ bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, case V1_3::OperationType::STRIDED_SLICE: return ConvertStridedSlice(operation, model, data); case V1_3::OperationType::SUB: - return ConvertSub(operation, model, data); + return ConvertElementwiseBinary(operation, model, data, BinaryOperation::Sub); case V1_3::OperationType::TRANSPOSE: return ConvertTranspose(operation, model, data); case V1_3::OperationType::TRANSPOSE_CONV_2D: @@ -179,12 +179,6 @@ bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, } } -bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data) -{ - ALOGV("hal_1_3::HalPolicy::ConvertAdd()"); - return ::ConvertAdd(operation, model, data); -} - bool HalPolicy::ConvertArgMinMax(const V1_3::Operation& operation, const V1_3::Model& model, ConversionData& data, @@ -257,10 +251,13 @@ bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model return ::ConvertDequantize_1_2(operation, model, data); } -bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data) +bool HalPolicy::ConvertElementwiseBinary(const Operation& operation, + const Model& model, + ConversionData& data, + BinaryOperation binaryOperation) { - ALOGV("hal_1_3::HalPolicy::ConvertDiv()"); - return ::ConvertDiv(operation, model, data); + ALOGV("hal_1_3::HalPolicy::ConvertElementwiseBinary()"); + return ::ConvertElementwiseBinary(operation, model, data, binaryOperation); } bool HalPolicy::ConvertElementwiseUnary(const Operation& operation, @@ -382,30 +379,12 @@ bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, return ConvertPooling2d(operation, __func__, PoolingAlgorithm::Max, model, data); } -bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data) -{ - ALOGV("hal_1_3::HalPolicy::ConvertMaximum()"); - return ::ConvertMaximum(operation, model, data); -} - bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data) { ALOGV("hal_1_3::HalPolicy::ConvertMean()"); return ::ConvertMean(operation, model, data); } -bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data) -{ - ALOGV("hal_1_3::HalPolicy::ConvertMinimum()"); - return ::ConvertMinimum(operation, model, data); -} - -bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data) -{ - ALOGV("hal_1_3::HalPolicy::ConvertMul()"); - return ::ConvertMul(operation, model, data); -} - bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data) { ALOGV("hal_1_3::HalPolicy::ConvertPad()"); @@ -508,12 +487,6 @@ bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, C return ::ConvertSoftmax(operation, model, data); } -bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data) -{ - ALOGV("hal_1_3::HalPolicy::ConvertSub()"); - return ::ConvertSub(operation, model, data); -} - bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data) { ALOGV("hal_1_3::HalPolicy::ConvertTanH()"); diff --git a/1.3/HalPolicy.hpp b/1.3/HalPolicy.hpp index 7411b24b..63e5ee7c 100644 --- a/1.3/HalPolicy.hpp +++ b/1.3/HalPolicy.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2020 Arm Ltd. All rights reserved. +// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -36,8 +36,6 @@ public: static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data); private: - static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data); - static bool ConvertArgMinMax(const Operation& operation, const Model& model, ConversionData& data, @@ -66,7 +64,10 @@ private: static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data); - static bool ConvertDiv(const Operation& operation, const Model& model, ConversionData& data); + static bool ConvertElementwiseBinary(const Operation& operation, + const Model& model, + ConversionData& data, + armnn::BinaryOperation binaryOperation); static bool ConvertElementwiseUnary(const Operation& operation, const Model& model, @@ -112,14 +113,8 @@ private: static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data); - static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data); - static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data); - static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data); - - static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data); - static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data); static bool ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data); @@ -164,8 +159,6 @@ private: static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data); - static bool ConvertSub(const Operation& operation, const Model& model, ConversionData& data); - static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data); static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data); -- cgit v1.2.1