aboutsummaryrefslogtreecommitdiff
path: root/src/graph/GraphBuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/graph/GraphBuilder.cpp')
-rw-r--r--src/graph/GraphBuilder.cpp70
1 files changed, 37 insertions, 33 deletions
diff --git a/src/graph/GraphBuilder.cpp b/src/graph/GraphBuilder.cpp
index 9f8dd69922..5db9540c75 100644
--- a/src/graph/GraphBuilder.cpp
+++ b/src/graph/GraphBuilder.cpp
@@ -30,15 +30,19 @@
#include "support/ToolchainSupport.h"
-#define CHECK_NODEIDX_PAIR(pair, g) \
- ARM_COMPUTE_ERROR_ON(((pair).node_id >= (g).nodes().size()) || ((g).node((pair).node_id) == nullptr) || ((pair).index >= (g).node((pair).node_id)->num_outputs()));
-
namespace arm_compute
{
namespace graph
{
namespace
{
+inline void check_nodeidx_pair(const NodeIdxPair &pair, const Graph &g)
+{
+ ARM_COMPUTE_UNUSED(pair);
+ ARM_COMPUTE_UNUSED(g);
+ ARM_COMPUTE_ERROR_ON((pair.node_id >= g.nodes().size()) || (g.node((pair).node_id) == nullptr) || (pair.index >= g.node(pair.node_id)->num_outputs()));
+}
+
Status set_node_params(Graph &g, NodeID nid, NodeParams &params)
{
INode *node = g.node(nid);
@@ -62,10 +66,10 @@ Status set_accessor_on_node(Graph &g, NodeID nid, bool is_output, size_t idx, IT
return Status{};
}
-NodeID add_const_node_with_name(Graph &g, NodeParams params, const std::string &name, TensorDescriptor desc, ITensorAccessorUPtr accessor)
+NodeID add_const_node_with_name(Graph &g, NodeParams params, const std::string &name, const TensorDescriptor &desc, ITensorAccessorUPtr accessor)
{
params.name = params.name.empty() ? "" : params.name + name;
- auto nid = GraphBuilder::add_const_node(g, params, std::move(desc), std::move(accessor));
+ auto nid = GraphBuilder::add_const_node(g, params, desc, std::move(accessor));
set_node_params(g, nid, params);
return nid;
}
@@ -73,7 +77,7 @@ NodeID add_const_node_with_name(Graph &g, NodeParams params, const std::string &
template <typename NT, typename... Args>
NodeID create_simple_single_input_output_node(Graph &g, NodeParams &params, NodeIdxPair input, Args &&... args)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
NodeID nid = g.add_node<NT>(std::forward<Args>(args)...);
g.add_connection(input.node_id, input.index, nid, 0);
@@ -83,7 +87,7 @@ NodeID create_simple_single_input_output_node(Graph &g, NodeParams &params, Node
}
template <typename NT, typename... Args>
-NodeID create_simple_multiple_input_single_output_node(Graph &g, NodeParams &params, std::vector<NodeIdxPair> inputs, Args &&... args)
+NodeID create_simple_multiple_input_single_output_node(Graph &g, NodeParams &params, const std::vector<NodeIdxPair> &inputs, Args &&... args)
{
ARM_COMPUTE_ERROR_ON(inputs.size() == 0);
@@ -92,7 +96,7 @@ NodeID create_simple_multiple_input_single_output_node(Graph &g, NodeParams &par
unsigned int i = 0;
for(const auto &input : inputs)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
g.add_connection(input.node_id, input.index, nid, i++);
}
set_node_params(g, nid, params);
@@ -101,7 +105,7 @@ NodeID create_simple_multiple_input_single_output_node(Graph &g, NodeParams &par
}
} // namespace
-NodeID GraphBuilder::add_const_node(Graph &g, NodeParams params, TensorDescriptor desc, ITensorAccessorUPtr accessor)
+NodeID GraphBuilder::add_const_node(Graph &g, NodeParams params, const TensorDescriptor &desc, ITensorAccessorUPtr accessor)
{
auto nid = g.add_node<ConstNode>(desc);
set_node_params(g, nid, params);
@@ -109,7 +113,7 @@ NodeID GraphBuilder::add_const_node(Graph &g, NodeParams params, TensorDescripto
return nid;
}
-NodeID GraphBuilder::add_input_node(Graph &g, NodeParams params, TensorDescriptor desc, ITensorAccessorUPtr accessor)
+NodeID GraphBuilder::add_input_node(Graph &g, NodeParams params, const TensorDescriptor &desc, ITensorAccessorUPtr accessor)
{
auto nid = g.add_node<InputNode>(desc);
set_node_params(g, nid, params);
@@ -119,7 +123,7 @@ NodeID GraphBuilder::add_input_node(Graph &g, NodeParams params, TensorDescripto
NodeID GraphBuilder::add_output_node(Graph &g, NodeParams params, NodeIdxPair input, ITensorAccessorUPtr accessor)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
NodeID nid = g.add_node<OutputNode>();
g.add_connection(input.node_id, input.index, nid, 0);
@@ -139,7 +143,7 @@ NodeID GraphBuilder::add_batch_normalization_node(Graph &g, NodeParams params, N
ITensorAccessorUPtr mean_accessor, ITensorAccessorUPtr var_accessor,
ITensorAccessorUPtr beta_accessor, ITensorAccessorUPtr gamma_accessor)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
bool has_beta = (beta_accessor != nullptr);
bool has_gamma = (gamma_accessor != nullptr);
@@ -189,8 +193,8 @@ NodeID GraphBuilder::add_batch_normalization_node(Graph &g, NodeParams params, N
NodeID GraphBuilder::add_bounding_box_transform_node(Graph &g, NodeParams params, NodeIdxPair input, NodeIdxPair deltas, BoundingBoxTransformInfo info)
{
- CHECK_NODEIDX_PAIR(input, g);
- CHECK_NODEIDX_PAIR(deltas, g);
+ check_nodeidx_pair(input, g);
+ check_nodeidx_pair(deltas, g);
NodeID nid = g.add_node<BoundingBoxTransformLayerNode>(info);
@@ -213,7 +217,7 @@ NodeID GraphBuilder::add_convolution_node(Graph &g, NodeParams params, NodeIdxPa
const QuantizationInfo weights_quant_info,
const QuantizationInfo out_quant_info)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
ARM_COMPUTE_ERROR_ON(depth == 0);
ARM_COMPUTE_ERROR_ON((kernel_spatial_extend.width == 0) || (kernel_spatial_extend.height == 0));
@@ -268,7 +272,7 @@ NodeID GraphBuilder::add_deconvolution_node(Graph &g, NodeParams params, NodeIdx
Size2D inner_border, ITensorAccessorUPtr weights_accessor,
ITensorAccessorUPtr bias_accessor)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
ARM_COMPUTE_ERROR_ON(depth == 0);
ARM_COMPUTE_ERROR_ON((kernel_spatial_extend.width == 0) || (kernel_spatial_extend.height == 0));
@@ -323,7 +327,7 @@ NodeID GraphBuilder::add_depthwise_convolution_node(Graph &g, NodeParams params,
PadStrideInfo conv_info, int depth_multiplier, DepthwiseConvolutionMethod method,
ITensorAccessorUPtr weights_accessor, ITensorAccessorUPtr bias_accessor, const QuantizationInfo quant_info, const QuantizationInfo out_quant_info)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
ARM_COMPUTE_ERROR_ON((kernel_spatial_extend.width == 0) || (kernel_spatial_extend.height == 0));
bool has_bias = (bias_accessor != nullptr);
@@ -374,9 +378,9 @@ NodeID GraphBuilder::add_depthwise_convolution_node(Graph &g, NodeParams params,
}
NodeID GraphBuilder::add_detection_output_node(Graph &g, NodeParams params, NodeIdxPair input_loc, NodeIdxPair input_conf, NodeIdxPair input_priorbox, const DetectionOutputLayerInfo &detect_info)
{
- CHECK_NODEIDX_PAIR(input_loc, g);
- CHECK_NODEIDX_PAIR(input_conf, g);
- CHECK_NODEIDX_PAIR(input_priorbox, g);
+ check_nodeidx_pair(input_loc, g);
+ check_nodeidx_pair(input_conf, g);
+ check_nodeidx_pair(input_priorbox, g);
// Create detection_output node and connect
NodeID detect_nid = g.add_node<DetectionOutputLayerNode>(detect_info);
@@ -396,8 +400,8 @@ NodeID GraphBuilder::add_dummy_node(Graph &g, NodeParams params, NodeIdxPair inp
NodeID GraphBuilder::add_elementwise_node(Graph &g, NodeParams params, NodeIdxPair input0, NodeIdxPair input1, EltwiseOperation operation)
{
- CHECK_NODEIDX_PAIR(input0, g);
- CHECK_NODEIDX_PAIR(input1, g);
+ check_nodeidx_pair(input0, g);
+ check_nodeidx_pair(input1, g);
NodeID nid = g.add_node<EltwiseLayerNode>(operation);
@@ -418,7 +422,7 @@ NodeID GraphBuilder::add_fully_connected_layer(Graph &g, NodeParams params, Node
NodeID weights_nid, NodeID bias_nid,
const FullyConnectedLayerInfo fc_info, const QuantizationInfo out_quant_info)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
ARM_COMPUTE_ERROR_ON(num_outputs == 0);
ARM_COMPUTE_ERROR_ON(weights_nid == EmptyNodeID);
@@ -446,7 +450,7 @@ NodeID GraphBuilder::add_fully_connected_layer(Graph &g, NodeParams params, Node
const FullyConnectedLayerInfo fc_info,
const QuantizationInfo weights_quant_info, const QuantizationInfo out_quant_info)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
ARM_COMPUTE_ERROR_ON(num_outputs == 0);
bool has_bias = (bias_accessor != nullptr);
@@ -487,9 +491,9 @@ NodeID GraphBuilder::add_fully_connected_layer(Graph &g, NodeParams params, Node
NodeID GraphBuilder::add_generate_proposals_node(Graph &g, NodeParams params, NodeIdxPair scores, NodeIdxPair deltas, NodeIdxPair anchors, GenerateProposalsInfo info)
{
- CHECK_NODEIDX_PAIR(scores, g);
- CHECK_NODEIDX_PAIR(deltas, g);
- CHECK_NODEIDX_PAIR(anchors, g);
+ check_nodeidx_pair(scores, g);
+ check_nodeidx_pair(deltas, g);
+ check_nodeidx_pair(anchors, g);
NodeID nid = g.add_node<GenerateProposalsLayerNode>(info);
@@ -509,7 +513,7 @@ NodeID GraphBuilder::add_normalization_node(Graph &g, NodeParams params, NodeIdx
NodeID GraphBuilder::add_normalize_planar_yuv_node(Graph &g, NodeParams params, NodeIdxPair input,
ITensorAccessorUPtr mean_accessor, ITensorAccessorUPtr std_accessor)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
// Get input tensor descriptor
const TensorDescriptor input_tensor_desc = get_tensor_descriptor(g, g.node(input.node_id)->outputs()[0]);
@@ -549,8 +553,8 @@ NodeID GraphBuilder::add_pooling_node(Graph &g, NodeParams params, NodeIdxPair i
NodeID GraphBuilder::add_priorbox_node(Graph &g, NodeParams params, NodeIdxPair input0, NodeIdxPair input1, const PriorBoxLayerInfo &prior_info)
{
- CHECK_NODEIDX_PAIR(input0, g);
- CHECK_NODEIDX_PAIR(input1, g);
+ check_nodeidx_pair(input0, g);
+ check_nodeidx_pair(input1, g);
// Create priorbox node and connect
NodeID prior_nid = g.add_node<PriorBoxLayerNode>(prior_info);
@@ -580,8 +584,8 @@ NodeID GraphBuilder::add_resize_node(Graph &g, NodeParams params, NodeIdxPair in
NodeID GraphBuilder::add_roi_align_node(Graph &g, NodeParams params, NodeIdxPair input, NodeIdxPair rois, ROIPoolingLayerInfo pool_info)
{
- CHECK_NODEIDX_PAIR(input, g);
- CHECK_NODEIDX_PAIR(rois, g);
+ check_nodeidx_pair(input, g);
+ check_nodeidx_pair(rois, g);
NodeID nid = g.add_node<ROIAlignLayerNode>(pool_info);
@@ -594,7 +598,7 @@ NodeID GraphBuilder::add_roi_align_node(Graph &g, NodeParams params, NodeIdxPair
NodeID GraphBuilder::add_scale_layer(Graph &g, const NodeParams &params, NodeIdxPair input, ITensorAccessorUPtr mul_accessor, ITensorAccessorUPtr add_accessor)
{
- CHECK_NODEIDX_PAIR(input, g);
+ check_nodeidx_pair(input, g);
// Get input tensor descriptor
const TensorDescriptor input_tensor_desc = get_tensor_descriptor(g, g.node(input.node_id)->outputs()[0]);