aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthecha01 <theo.charalambous@arm.com>2020-07-28 17:28:17 +0100
committerMichele Di Giorgio <michele.digiorgio@arm.com>2020-08-24 09:32:49 +0000
commitf8e358463b4b612eb958fa2dd7588dbefe9b3e2a (patch)
treee8754177347fe911799cb6c9815d3e7c4a85f2c8
parentebd8fb479aa978c428c54c12be6457a0e635c363 (diff)
downloadComputeLibrary-f8e358463b4b612eb958fa2dd7588dbefe9b3e2a.tar.gz
Add support ElementwiseMax operator in graph API
Signed-off-by: thecha01 <theo.charalambous@arm.com> Change-Id: I764f1eabb6412350eb719cc755b8777efc7d70a1 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3736 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
-rw-r--r--arm_compute/graph/Types.h1
-rw-r--r--arm_compute/graph/backends/FunctionHelpers.h6
-rw-r--r--arm_compute/graph/backends/ValidateHelpers.h4
-rw-r--r--src/graph/backends/CL/CLFunctionsFactory.cpp1
-rw-r--r--src/graph/backends/CL/CLNodeValidator.cpp1
-rw-r--r--src/graph/backends/NEON/NEFunctionFactory.cpp1
-rw-r--r--src/graph/backends/NEON/NENodeValidator.cpp1
7 files changed, 15 insertions, 0 deletions
diff --git a/arm_compute/graph/Types.h b/arm_compute/graph/Types.h
index 3a4d0a6070..65d737c7b2 100644
--- a/arm_compute/graph/Types.h
+++ b/arm_compute/graph/Types.h
@@ -104,6 +104,7 @@ enum class EltwiseOperation
Add, /**< Arithmetic addition */
Sub, /**< Arithmetic subtraction */
Mul, /**< Arithmetic multiplication */
+ Max, /**< Arithmetic maximum */
};
/** Supported Unary Element-wise operations */
diff --git a/arm_compute/graph/backends/FunctionHelpers.h b/arm_compute/graph/backends/FunctionHelpers.h
index af748341a5..60a03e67b0 100644
--- a/arm_compute/graph/backends/FunctionHelpers.h
+++ b/arm_compute/graph/backends/FunctionHelpers.h
@@ -798,6 +798,12 @@ std::unique_ptr<IFunction> create_eltwise_layer(EltwiseLayerNode &node)
std::string("PixelWiseMultiplication"),
input1, input2, output, 1.f, convert_policy, node.rounding_policy(), act_info);
}
+ else if(eltwise_op == EltwiseOperation::Max)
+ {
+ std::tie(func, func_name) = create_named_function<typename EltwiseFunctions::Maximum>(
+ std::string("ElementwiseMaximum"),
+ input1, input2, output, act_info);
+ }
else
{
ARM_COMPUTE_ERROR("Unsupported element-wise operation!");
diff --git a/arm_compute/graph/backends/ValidateHelpers.h b/arm_compute/graph/backends/ValidateHelpers.h
index c929983834..0aec2aec1c 100644
--- a/arm_compute/graph/backends/ValidateHelpers.h
+++ b/arm_compute/graph/backends/ValidateHelpers.h
@@ -616,6 +616,10 @@ Status validate_eltwise_Layer(EltwiseLayerNode &node)
{
return EltwiseLayerFunctions::PixelWiseMultiplication::validate(input1, input2, output, scale, convert_policy, round_policy, act_info);
}
+ else if(eltwise_op == EltwiseOperation::Max)
+ {
+ return EltwiseLayerFunctions::ElementwiseMax::validate(input1, input2, output, act_info);
+ }
else
{
ARM_COMPUTE_ERROR("Unsupported element-wise operation!");
diff --git a/src/graph/backends/CL/CLFunctionsFactory.cpp b/src/graph/backends/CL/CLFunctionsFactory.cpp
index d41da4bf7f..c9d1f6a2bb 100644
--- a/src/graph/backends/CL/CLFunctionsFactory.cpp
+++ b/src/graph/backends/CL/CLFunctionsFactory.cpp
@@ -64,6 +64,7 @@ struct CLEltwiseFunctions
using Addition = CLArithmeticAddition;
using Subtraction = CLArithmeticSubtraction;
using Multiplication = CLPixelWiseMultiplication;
+ using Maximum = CLElementwiseMax;
};
/** Collection of CL unary element-wise functions */
diff --git a/src/graph/backends/CL/CLNodeValidator.cpp b/src/graph/backends/CL/CLNodeValidator.cpp
index cc618db127..7646ac323f 100644
--- a/src/graph/backends/CL/CLNodeValidator.cpp
+++ b/src/graph/backends/CL/CLNodeValidator.cpp
@@ -44,6 +44,7 @@ struct CLEltwiseLayerFunctions
using ArithmeticAddition = CLArithmeticAddition;
using ArithmeticSubtraction = CLArithmeticSubtraction;
using PixelWiseMultiplication = CLPixelWiseMultiplication;
+ using ElementwiseMax = CLElementwiseMax;
};
/** Collection of CL unary element-wise functions */
diff --git a/src/graph/backends/NEON/NEFunctionFactory.cpp b/src/graph/backends/NEON/NEFunctionFactory.cpp
index 4fee630192..1a1519bb6d 100644
--- a/src/graph/backends/NEON/NEFunctionFactory.cpp
+++ b/src/graph/backends/NEON/NEFunctionFactory.cpp
@@ -69,6 +69,7 @@ struct NEEltwiseFunctions
using Addition = NEArithmeticAddition;
using Subtraction = NEArithmeticSubtraction;
using Multiplication = NEPixelWiseMultiplication;
+ using Maximum = NEElementwiseMax;
};
/** Collection of NEON unary element-wise functions */
diff --git a/src/graph/backends/NEON/NENodeValidator.cpp b/src/graph/backends/NEON/NENodeValidator.cpp
index a5d22fb965..74c959a95e 100644
--- a/src/graph/backends/NEON/NENodeValidator.cpp
+++ b/src/graph/backends/NEON/NENodeValidator.cpp
@@ -44,6 +44,7 @@ struct NEEltwiseLayerFunctions
using ArithmeticAddition = NEArithmeticAddition;
using ArithmeticSubtraction = NEArithmeticSubtraction;
using PixelWiseMultiplication = NEPixelWiseMultiplication;
+ using ElementwiseMax = NEElementwiseMax;
};
/** Collection of NEON unary element-wise functions */