aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/graph
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2018-05-01 15:26:20 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:51:17 +0000
commit5c2fb3f34462632b99331e2cc2d964c99fc1782b (patch)
tree16ee3edc412fcf7e3d20241ca8fb093d9774863d /arm_compute/graph
parentcac13b1cfd593889271f8e2191be2039b8d88f36 (diff)
downloadComputeLibrary-5c2fb3f34462632b99331e2cc2d964c99fc1782b.tar.gz
COMPMID-997: Add support for node's name in GraphAPI.
Change-Id: I0ca02e42807c1ad9afeffb7202a3556feb11442f Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/129701 Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'arm_compute/graph')
-rw-r--r--arm_compute/graph/Workload.h21
-rw-r--r--arm_compute/graph/frontend/ILayer.h22
-rw-r--r--arm_compute/graph/frontend/IStreamOperators.h12
-rw-r--r--arm_compute/graph/frontend/Layers.h26
4 files changed, 68 insertions, 13 deletions
diff --git a/arm_compute/graph/Workload.h b/arm_compute/graph/Workload.h
index 11bb22ea9a..5ca9fd6c58 100644
--- a/arm_compute/graph/Workload.h
+++ b/arm_compute/graph/Workload.h
@@ -39,6 +39,27 @@ class INode;
class Tensor;
class Graph;
+struct ExecutionTask;
+
+void execute_task(ExecutionTask &task);
+
+/** Task executor */
+class TaskExecutor final
+{
+private:
+ /** Default constructor **/
+ TaskExecutor();
+
+public:
+ /** Task executor accessor
+ *
+ * @return Task executor instance
+ */
+ static TaskExecutor &get();
+ /** Function that is responsible for executing tasks */
+ std::function<decltype(execute_task)> execute_function;
+};
+
/** Execution task
*
* Contains all the information required to execute a given task
diff --git a/arm_compute/graph/frontend/ILayer.h b/arm_compute/graph/frontend/ILayer.h
index 5add8ab440..f7caaea47d 100644
--- a/arm_compute/graph/frontend/ILayer.h
+++ b/arm_compute/graph/frontend/ILayer.h
@@ -46,6 +46,28 @@ public:
* @return ID of the created node.
*/
virtual NodeID create_layer(IStream &s) = 0;
+ /** Sets the name of the layer
+ *
+ * @param[in] name Name of the layer
+ *
+ * @return The layer object
+ */
+ ILayer &set_name(std::string name)
+ {
+ _name = name;
+ return *this;
+ }
+ /** Layer name accessor
+ *
+ * @return Returns the name of the layer
+ */
+ const std::string &name() const
+ {
+ return _name;
+ }
+
+private:
+ std::string _name = {};
};
} // namespace frontend
} // namespace graph
diff --git a/arm_compute/graph/frontend/IStreamOperators.h b/arm_compute/graph/frontend/IStreamOperators.h
index 1eb6522935..350d78fd1c 100644
--- a/arm_compute/graph/frontend/IStreamOperators.h
+++ b/arm_compute/graph/frontend/IStreamOperators.h
@@ -48,6 +48,18 @@ inline IStream &operator<<(IStream &s, ILayer &&layer)
s.add_layer(layer);
return s;
}
+/** Overloaded stream operator to add a node to the graph
+ *
+ * @param[in, out] s Stream to add the tensor
+ * @param[in] layer Layer to be added
+ *
+ * @return Updated stream
+ */
+inline IStream &operator<<(IStream &s, ILayer &layer)
+{
+ s.add_layer(layer);
+ return s;
+}
/** Overloaded stream operator to provide a target hint to the graph
*
* @param[in, out] s Stream to provide the hint to
diff --git a/arm_compute/graph/frontend/Layers.h b/arm_compute/graph/frontend/Layers.h
index 2e7c50e6da..54cf515aa7 100644
--- a/arm_compute/graph/frontend/Layers.h
+++ b/arm_compute/graph/frontend/Layers.h
@@ -57,7 +57,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
return GraphBuilder::add_input_node(s.graph(), common_params, _desc, std::move(_accessor));
}
@@ -81,7 +81,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_output_node(s.graph(), common_params, input, std::move(_accessor));
}
@@ -105,7 +105,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_activation_node(s.graph(), common_params, input, _act_info);
}
@@ -140,7 +140,7 @@ public:
ARM_COMPUTE_ERROR_ON(_mean == nullptr);
ARM_COMPUTE_ERROR_ON(_var == nullptr);
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_batch_normalization_node(s.graph(), common_params, input, _epsilon,
std::move(_mean), std::move(_var), std::move(_beta), std::move(_gamma));
@@ -194,7 +194,7 @@ public:
NodeID create_layer(IStream &s) override
{
NodeIdxPair input = { s.tail_node(), 0 };
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
return GraphBuilder::add_convolution_node(s.graph(), common_params, input,
Size2D(_conv_width, _conv_height), _ofm, _conv_info, _num_groups,
s.hints().convolution_method_hint,
@@ -244,7 +244,7 @@ public:
NodeID create_layer(IStream &s) override
{
NodeIdxPair input = { s.tail_node(), 0 };
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
return GraphBuilder::add_depthwise_convolution_node(s.graph(), common_params,
input, Size2D(_conv_width, _conv_height), _conv_info,
s.hints().depthwise_convolution_method_hint,
@@ -271,7 +271,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_flatten_node(s.graph(), common_params, input);
}
@@ -296,7 +296,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_fully_connected_layer(s.graph(), common_params, input, _num_outputs,
std::move(_weights), std::move(_bias));
@@ -323,7 +323,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_normalization_node(s.graph(), common_params, input, _norm_info);
}
@@ -347,7 +347,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_pooling_node(s.graph(), common_params, input, _pool_info);
}
@@ -371,7 +371,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_reshape_node(s.graph(), common_params, input, _shape);
}
@@ -395,7 +395,7 @@ public:
NodeID create_layer(IStream &s) override
{
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
NodeIdxPair input = { s.tail_node(), 0 };
return GraphBuilder::add_softmax_node(s.graph(), common_params, input, _beta);
}
@@ -441,7 +441,7 @@ public:
NodeID create_layer(IStream &s) override
{
NodeID nid = EmptyNodeID;
- NodeParams common_params = { "", s.hints().target_hint };
+ NodeParams common_params = { name(), s.hints().target_hint };
if(_sub_streams.size() == 1 && _sub_streams.at(0) != nullptr)
{
nid = _sub_streams[0]->tail_node();