From 797b76b1aef38ea3be6f68ae2bf323048e9beff8 Mon Sep 17 00:00:00 2001 From: Sang-Hoon Park Date: Wed, 11 Mar 2020 23:21:14 +0000 Subject: COMPMID-3221: Add EltwiseLayerDescriptor A new descriptor struct for EltwiseLayerNode is added to have better extendability. Change-Id: I3d0a4b3cec1f2425f39157cee6b5c344336412a3 Signed-off-by: Sang-Hoon Park Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2876 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio --- arm_compute/graph/LayerDescriptors.h | 31 ++++++++++++-- arm_compute/graph/nodes/EltwiseLayerNode.h | 12 ++---- examples/graph_deepspeech_v0_4_1.cpp | 2 +- examples/graph_edsr.h | 66 +++++++++++++++--------------- src/graph/GraphBuilder.cpp | 2 +- src/graph/nodes/EltwiseLayerNode.cpp | 16 ++++---- 6 files changed, 73 insertions(+), 56 deletions(-) diff --git a/arm_compute/graph/LayerDescriptors.h b/arm_compute/graph/LayerDescriptors.h index 94074e550e..af69682fa3 100644 --- a/arm_compute/graph/LayerDescriptors.h +++ b/arm_compute/graph/LayerDescriptors.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -21,10 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_CONCAT_DESCRIPTOR_H -#define ARM_COMPUTE_CONCAT_DESCRIPTOR_H +#ifndef ARM_COMPUTE_LAYER_DESCRIPTORS_H +#define ARM_COMPUTE_LAYER_DESCRIPTORS_H #include "arm_compute/core/Types.h" +#include "arm_compute/graph/Types.h" namespace arm_compute { @@ -63,7 +64,29 @@ struct ConcatLayerDescriptor const DataLayoutDimension axis; /**< Concatenation Axis */ const QuantizationInfo output_qinfo; /**< Output quantizazion info */ }; + +/** Elementwise layer descriptor */ +struct EltwiseLayerDescriptor +{ + /** Constructor + * + * @param[in] op Element-wise operation to perform + * @param[in] out_quant_info (Optional) Output quantization information. Defaults to empty @ref QuantizationInfo + * @param[in] c_policy (Optional) Convert policy used for the operation. Defaults to @ref ConvertPolicy::SATURATE + * @param[in] r_policy (Optional) Rounding policy used for the operation. Defaults to @ref RoundingPolicy::TO_ZERO + */ + EltwiseLayerDescriptor(EltwiseOperation op, QuantizationInfo out_quant_info = QuantizationInfo(), ConvertPolicy c_policy = ConvertPolicy::SATURATE, RoundingPolicy r_policy = RoundingPolicy::TO_ZERO) + : op(op), out_quant_info(out_quant_info), c_policy(c_policy), r_policy(r_policy) + { + } + + EltwiseOperation op; /**< Element-wise operation to perform */ + QuantizationInfo out_quant_info; /**< Output quantization information */ + ConvertPolicy c_policy; /**< Convert policy */ + RoundingPolicy r_policy; /**< Rounding policy */ +}; + } // namespace descriptor } // namespace graph } // namespace arm_compute -#endif /* ARM_COMPUTE_CONCAT_DESCRIPTOR_H */ \ No newline at end of file +#endif /* ARM_COMPUTE_LAYER_DESCRIPTORS_H */ \ No newline at end of file diff --git a/arm_compute/graph/nodes/EltwiseLayerNode.h b/arm_compute/graph/nodes/EltwiseLayerNode.h index 1ca8e9c23d..21c220a548 100644 --- a/arm_compute/graph/nodes/EltwiseLayerNode.h +++ b/arm_compute/graph/nodes/EltwiseLayerNode.h @@ -36,12 +36,9 @@ class EltwiseLayerNode final : public INode public: /** Constructor * - * @param[in] op Element-wise operation to perform - * @param[in] out_quant_info (Optional) Output quantization information - * @param[in] c_policy (Optional) Convert policy used for the operation - * @param[in] r_policy (Optional) Rounding policy used for the operation + * @param[in] descriptor Containing information for the node described in @ref descriptors::EltwiseLayerDescriptor */ - EltwiseLayerNode(EltwiseOperation op, QuantizationInfo out_quant_info = QuantizationInfo(), ConvertPolicy c_policy = ConvertPolicy::SATURATE, RoundingPolicy r_policy = RoundingPolicy::TO_ZERO); + EltwiseLayerNode(const descriptors::EltwiseLayerDescriptor &descriptor); /** Eltwise operation accessor * * @return Eltwise operation that is to be performed by the node @@ -67,10 +64,7 @@ public: void accept(INodeVisitor &v) override; private: - EltwiseOperation _op; - QuantizationInfo _out_quant_info; - ConvertPolicy _convert_policy; - RoundingPolicy _rounding_policy; + descriptors::EltwiseLayerDescriptor descriptor; }; } // namespace graph } // namespace arm_compute diff --git a/examples/graph_deepspeech_v0_4_1.cpp b/examples/graph_deepspeech_v0_4_1.cpp index ed44ffbee2..cc65bf309d 100644 --- a/examples/graph_deepspeech_v0_4_1.cpp +++ b/examples/graph_deepspeech_v0_4_1.cpp @@ -289,7 +289,7 @@ private: tanh_ss.forward_tail(tanh_nid); // Add (third split) - NodeID add_nid = graph.graph().add_node(EltwiseOperation::Add); + NodeID add_nid = graph.graph().add_node(descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add }); graph.graph().add_connection(split_nid, 2, add_nid, 0); graph.graph().add_connection(add_y.tail_node(), 0, add_nid, 1); set_node_params(graph.graph(), add_nid, add_params); diff --git a/examples/graph_edsr.h b/examples/graph_edsr.h index 8941430c76..e31cc8940a 100644 --- a/examples/graph_edsr.h +++ b/examples/graph_edsr.h @@ -725,14 +725,14 @@ public: _graph.add_connection(id_block_0_1_Conv2D_bias, 0, id_block_0_1_BiasAdd, 2); NodeID id_mul = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0006341293919831514, 174 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0006341293919831514, 174 } }); INode *node_mul = _graph.node(id_mul); node_mul->set_common_node_parameters(NodeParams{ "mul", target }); _graph.add_connection(id_block_0_1_BiasAdd, 0, id_mul, 0); _graph.add_connection(id_mul_y, 0, id_mul, 1); NodeID id_add = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0031092411372810602, 95 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0031092411372810602, 95 } }); INode *node_add = _graph.node(id_add); node_add->set_common_node_parameters(NodeParams{ "add", target }); _graph.add_connection(id_pre_residual_BiasAdd, 0, id_add, 0); @@ -756,14 +756,14 @@ public: _graph.add_connection(id_block_1_1_Conv2D_bias, 0, id_block_1_1_BiasAdd, 2); NodeID id_mul_1 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0004965941770933568, 122 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004965941770933568, 122 } }); INode *node_mul_1 = _graph.node(id_mul_1); node_mul_1->set_common_node_parameters(NodeParams{ "mul_1", target }); _graph.add_connection(id_block_1_1_BiasAdd, 0, id_mul_1, 0); _graph.add_connection(id_mul_1_y, 0, id_mul_1, 1); NodeID id_add_1 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0030700892675668, 96 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0030700892675668, 96 } }); INode *node_add_1 = _graph.node(id_add_1); node_add_1->set_common_node_parameters(NodeParams{ "add_1", target }); _graph.add_connection(id_add, 0, id_add_1, 0); @@ -787,14 +787,14 @@ public: _graph.add_connection(id_block_2_1_Conv2D_bias, 0, id_block_2_1_BiasAdd, 2); NodeID id_mul_2 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0004133903712499887, 130 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004133903712499887, 130 } }); INode *node_mul_2 = _graph.node(id_mul_2); node_mul_2->set_common_node_parameters(NodeParams{ "mul_2", target }); _graph.add_connection(id_block_2_1_BiasAdd, 0, id_mul_2, 0); _graph.add_connection(id_mul_2_y, 0, id_mul_2, 1); NodeID id_add_2 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.003026385325938463, 94 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003026385325938463, 94 } }); INode *node_add_2 = _graph.node(id_add_2); node_add_2->set_common_node_parameters(NodeParams{ "add_2", target }); _graph.add_connection(id_add_1, 0, id_add_2, 0); @@ -818,14 +818,14 @@ public: _graph.add_connection(id_block_3_1_Conv2D_bias, 0, id_block_3_1_BiasAdd, 2); NodeID id_mul_3 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0003943995980080217, 141 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0003943995980080217, 141 } }); INode *node_mul_3 = _graph.node(id_mul_3); node_mul_3->set_common_node_parameters(NodeParams{ "mul_3", target }); _graph.add_connection(id_block_3_1_BiasAdd, 0, id_mul_3, 0); _graph.add_connection(id_mul_3_y, 0, id_mul_3, 1); NodeID id_add_3 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.003101327223703265, 98 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003101327223703265, 98 } }); INode *node_add_3 = _graph.node(id_add_3); node_add_3->set_common_node_parameters(NodeParams{ "add_3", target }); _graph.add_connection(id_add_2, 0, id_add_3, 0); @@ -849,14 +849,14 @@ public: _graph.add_connection(id_block_4_1_Conv2D_bias, 0, id_block_4_1_BiasAdd, 2); NodeID id_mul_4 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.00044342130422592163, 143 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00044342130422592163, 143 } }); INode *node_mul_4 = _graph.node(id_mul_4); node_mul_4->set_common_node_parameters(NodeParams{ "mul_4", target }); _graph.add_connection(id_block_4_1_BiasAdd, 0, id_mul_4, 0); _graph.add_connection(id_mul_4_y, 0, id_mul_4, 1); NodeID id_add_4 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.003150839824229479, 98 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003150839824229479, 98 } }); INode *node_add_4 = _graph.node(id_add_4); node_add_4->set_common_node_parameters(NodeParams{ "add_4", target }); _graph.add_connection(id_add_3, 0, id_add_4, 0); @@ -880,14 +880,14 @@ public: _graph.add_connection(id_block_5_1_Conv2D_bias, 0, id_block_5_1_BiasAdd, 2); NodeID id_mul_5 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0004023382789455354, 132 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004023382789455354, 132 } }); INode *node_mul_5 = _graph.node(id_mul_5); node_mul_5->set_common_node_parameters(NodeParams{ "mul_5", target }); _graph.add_connection(id_block_5_1_BiasAdd, 0, id_mul_5, 0); _graph.add_connection(id_mul_5_y, 0, id_mul_5, 1); NodeID id_add_5 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0030975888948887587, 94 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0030975888948887587, 94 } }); INode *node_add_5 = _graph.node(id_add_5); node_add_5->set_common_node_parameters(NodeParams{ "add_5", target }); _graph.add_connection(id_add_4, 0, id_add_5, 0); @@ -911,14 +911,14 @@ public: _graph.add_connection(id_block_6_1_Conv2D_bias, 0, id_block_6_1_BiasAdd, 2); NodeID id_mul_6 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.00041950203012675047, 125 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00041950203012675047, 125 } }); INode *node_mul_6 = _graph.node(id_mul_6); node_mul_6->set_common_node_parameters(NodeParams{ "mul_6", target }); _graph.add_connection(id_block_6_1_BiasAdd, 0, id_mul_6, 0); _graph.add_connection(id_mul_6_y, 0, id_mul_6, 1); NodeID id_add_6 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.003155382815748453, 92 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003155382815748453, 92 } }); INode *node_add_6 = _graph.node(id_add_6); node_add_6->set_common_node_parameters(NodeParams{ "add_6", target }); _graph.add_connection(id_add_5, 0, id_add_6, 0); @@ -942,14 +942,14 @@ public: _graph.add_connection(id_block_7_1_Conv2D_bias, 0, id_block_7_1_BiasAdd, 2); NodeID id_mul_7 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.00042401350219734013, 142 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00042401350219734013, 142 } }); INode *node_mul_7 = _graph.node(id_mul_7); node_mul_7->set_common_node_parameters(NodeParams{ "mul_7", target }); _graph.add_connection(id_block_7_1_BiasAdd, 0, id_mul_7, 0); _graph.add_connection(id_mul_7_y, 0, id_mul_7, 1); NodeID id_add_7 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0031760605052113533, 86 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0031760605052113533, 86 } }); INode *node_add_7 = _graph.node(id_add_7); node_add_7->set_common_node_parameters(NodeParams{ "add_7", target }); _graph.add_connection(id_add_6, 0, id_add_7, 0); @@ -973,14 +973,14 @@ public: _graph.add_connection(id_block_8_1_Conv2D_bias, 0, id_block_8_1_BiasAdd, 2); NodeID id_mul_8 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.00042673019925132394, 123 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00042673019925132394, 123 } }); INode *node_mul_8 = _graph.node(id_mul_8); node_mul_8->set_common_node_parameters(NodeParams{ "mul_8", target }); _graph.add_connection(id_block_8_1_BiasAdd, 0, id_mul_8, 0); _graph.add_connection(id_mul_8_y, 0, id_mul_8, 1); NodeID id_add_8 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0032156009692698717, 86 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0032156009692698717, 86 } }); INode *node_add_8 = _graph.node(id_add_8); node_add_8->set_common_node_parameters(NodeParams{ "add_8", target }); _graph.add_connection(id_add_7, 0, id_add_8, 0); @@ -1004,14 +1004,14 @@ public: _graph.add_connection(id_block_9_1_Conv2D_bias, 0, id_block_9_1_BiasAdd, 2); NodeID id_mul_9 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0004448975087143481, 129 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004448975087143481, 129 } }); INode *node_mul_9 = _graph.node(id_mul_9); node_mul_9->set_common_node_parameters(NodeParams{ "mul_9", target }); _graph.add_connection(id_block_9_1_BiasAdd, 0, id_mul_9, 0); _graph.add_connection(id_mul_9_y, 0, id_mul_9, 1); NodeID id_add_9 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0032742770854383707, 80 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0032742770854383707, 80 } }); INode *node_add_9 = _graph.node(id_add_9); node_add_9->set_common_node_parameters(NodeParams{ "add_9", target }); _graph.add_connection(id_add_8, 0, id_add_9, 0); @@ -1035,14 +1035,14 @@ public: _graph.add_connection(id_block_10_1_Conv2D_bias, 0, id_block_10_1_BiasAdd, 2); NodeID id_mul_10 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.00036083892337046564, 130 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00036083892337046564, 130 } }); INode *node_mul_10 = _graph.node(id_mul_10); node_mul_10->set_common_node_parameters(NodeParams{ "mul_10", target }); _graph.add_connection(id_block_10_1_BiasAdd, 0, id_mul_10, 0); _graph.add_connection(id_mul_10_y, 0, id_mul_10, 1); NodeID id_add_10 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0031881770119071007, 81 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0031881770119071007, 81 } }); INode *node_add_10 = _graph.node(id_add_10); node_add_10->set_common_node_parameters(NodeParams{ "add_10", target }); _graph.add_connection(id_add_9, 0, id_add_10, 0); @@ -1066,14 +1066,14 @@ public: _graph.add_connection(id_block_11_1_Conv2D_bias, 0, id_block_11_1_BiasAdd, 2); NodeID id_mul_11 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0003968806122429669, 133 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0003968806122429669, 133 } }); INode *node_mul_11 = _graph.node(id_mul_11); node_mul_11->set_common_node_parameters(NodeParams{ "mul_11", target }); _graph.add_connection(id_block_11_1_BiasAdd, 0, id_mul_11, 0); _graph.add_connection(id_mul_11_y, 0, id_mul_11, 1); NodeID id_add_11 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0032707711216062307, 80 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0032707711216062307, 80 } }); INode *node_add_11 = _graph.node(id_add_11); node_add_11->set_common_node_parameters(NodeParams{ "add_11", target }); _graph.add_connection(id_add_10, 0, id_add_11, 0); @@ -1097,14 +1097,14 @@ public: _graph.add_connection(id_block_12_1_Conv2D_bias, 0, id_block_12_1_BiasAdd, 2); NodeID id_mul_12 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0004365936329122633, 110 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004365936329122633, 110 } }); INode *node_mul_12 = _graph.node(id_mul_12); node_mul_12->set_common_node_parameters(NodeParams{ "mul_12", target }); _graph.add_connection(id_block_12_1_BiasAdd, 0, id_mul_12, 0); _graph.add_connection(id_mul_12_y, 0, id_mul_12, 1); NodeID id_add_12 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.003275055903941393, 79 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.003275055903941393, 79 } }); INode *node_add_12 = _graph.node(id_add_12); node_add_12->set_common_node_parameters(NodeParams{ "add_12", target }); _graph.add_connection(id_add_11, 0, id_add_12, 0); @@ -1128,14 +1128,14 @@ public: _graph.add_connection(id_block_13_1_Conv2D_bias, 0, id_block_13_1_BiasAdd, 2); NodeID id_mul_13 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0004385628562886268, 139 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004385628562886268, 139 } }); INode *node_mul_13 = _graph.node(id_mul_13); node_mul_13->set_common_node_parameters(NodeParams{ "mul_13", target }); _graph.add_connection(id_block_13_1_BiasAdd, 0, id_mul_13, 0); _graph.add_connection(id_mul_13_y, 0, id_mul_13, 1); NodeID id_add_13 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0033287261612713337, 78 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0033287261612713337, 78 } }); INode *node_add_13 = _graph.node(id_add_13); node_add_13->set_common_node_parameters(NodeParams{ "add_13", target }); _graph.add_connection(id_add_12, 0, id_add_13, 0); @@ -1159,14 +1159,14 @@ public: _graph.add_connection(id_block_14_1_Conv2D_bias, 0, id_block_14_1_BiasAdd, 2); NodeID id_mul_14 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.00037829321809113026, 130 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.00037829321809113026, 130 } }); INode *node_mul_14 = _graph.node(id_mul_14); node_mul_14->set_common_node_parameters(NodeParams{ "mul_14", target }); _graph.add_connection(id_block_14_1_BiasAdd, 0, id_mul_14, 0); _graph.add_connection(id_mul_14_y, 0, id_mul_14, 1); NodeID id_add_14 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0033590947277843952, 77 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0033590947277843952, 77 } }); INode *node_add_14 = _graph.node(id_add_14); node_add_14->set_common_node_parameters(NodeParams{ "add_14", target }); _graph.add_connection(id_add_13, 0, id_add_14, 0); @@ -1190,14 +1190,14 @@ public: _graph.add_connection(id_block_15_1_Conv2D_bias, 0, id_block_15_1_BiasAdd, 2); NodeID id_mul_15 = _graph.add_node( - EltwiseOperation::Mul, QuantizationInfo{ 0.0004008286341559142, 130 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Mul, QuantizationInfo{ 0.0004008286341559142, 130 } }); INode *node_mul_15 = _graph.node(id_mul_15); node_mul_15->set_common_node_parameters(NodeParams{ "mul_15", target }); _graph.add_connection(id_block_15_1_BiasAdd, 0, id_mul_15, 0); _graph.add_connection(id_mul_15_y, 0, id_mul_15, 1); NodeID id_add_15 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0035031239967793226, 78 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0035031239967793226, 78 } }); INode *node_add_15 = _graph.node(id_add_15); node_add_15->set_common_node_parameters(NodeParams{ "add_15", target }); _graph.add_connection(id_add_14, 0, id_add_15, 0); @@ -1221,7 +1221,7 @@ public: _graph.add_connection(id_post_residual_Conv2D_bias, 0, id_post_residual_BiasAdd, 2); NodeID id_add_16 = _graph.add_node( - EltwiseOperation::Add, QuantizationInfo{ 0.0065071373246610165, 89 }); + descriptors::EltwiseLayerDescriptor{ EltwiseOperation::Add, QuantizationInfo{ 0.0065071373246610165, 89 } }); INode *node_add_16 = _graph.node(id_add_16); node_add_16->set_common_node_parameters(NodeParams{ "add_16", target }); _graph.add_connection(id_post_residual_BiasAdd, 0, id_add_16, 0); diff --git a/src/graph/GraphBuilder.cpp b/src/graph/GraphBuilder.cpp index 97ade9362d..e429817d50 100644 --- a/src/graph/GraphBuilder.cpp +++ b/src/graph/GraphBuilder.cpp @@ -438,7 +438,7 @@ NodeID GraphBuilder::add_elementwise_node(Graph &g, NodeParams params, NodeIdxPa check_nodeidx_pair(input0, g); check_nodeidx_pair(input1, g); - NodeID nid = g.add_node(operation); + NodeID nid = g.add_node(descriptors::EltwiseLayerDescriptor{ operation }); g.add_connection(input0.node_id, input0.index, nid, 0); g.add_connection(input1.node_id, input1.index, nid, 1); diff --git a/src/graph/nodes/EltwiseLayerNode.cpp b/src/graph/nodes/EltwiseLayerNode.cpp index 7970bad5f7..a83a5fb3b2 100644 --- a/src/graph/nodes/EltwiseLayerNode.cpp +++ b/src/graph/nodes/EltwiseLayerNode.cpp @@ -30,8 +30,8 @@ namespace arm_compute { namespace graph { -EltwiseLayerNode::EltwiseLayerNode(EltwiseOperation op, QuantizationInfo out_quant_info, ConvertPolicy c_policy, RoundingPolicy r_policy) - : _op(op), _out_quant_info(out_quant_info), _convert_policy(c_policy), _rounding_policy(r_policy) +EltwiseLayerNode::EltwiseLayerNode(const descriptors::EltwiseLayerDescriptor &descriptor) + : descriptor(descriptor) { _input_edges.resize(2, EmptyEdgeID); _outputs.resize(1, NullTensorID); @@ -39,17 +39,17 @@ EltwiseLayerNode::EltwiseLayerNode(EltwiseOperation op, QuantizationInfo out_qua EltwiseOperation EltwiseLayerNode::eltwise_operation() const { - return _op; + return descriptor.op; } ConvertPolicy EltwiseLayerNode::convert_policy() const { - return _convert_policy; + return descriptor.c_policy; } RoundingPolicy EltwiseLayerNode::rounding_policy() const { - return _rounding_policy; + return descriptor.r_policy; } bool EltwiseLayerNode::forward_descriptors() @@ -66,16 +66,16 @@ bool EltwiseLayerNode::forward_descriptors() TensorDescriptor EltwiseLayerNode::configure_output(size_t idx) const { - ARM_COMPUTE_UNUSED(idx, _op, _convert_policy, _rounding_policy); + ARM_COMPUTE_UNUSED(idx); const Tensor *src = input(0); ARM_COMPUTE_ERROR_ON(src == nullptr); auto output_info = src->desc(); - if(!_out_quant_info.empty()) + if(!descriptor.out_quant_info.empty()) { - output_info.set_quantization_info(_out_quant_info); + output_info.set_quantization_info(descriptor.out_quant_info); } return output_info; -- cgit v1.2.1