aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/SubGraph.cpp
diff options
context:
space:
mode:
authorDerek Lamberti <derek.lamberti@arm.com>2019-04-26 13:05:17 +0100
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-04-30 09:49:43 +0100
commitff05cc50880032614675e9422ba829785f61ba14 (patch)
treebe763d0049af9a8c8a9873a79f872b33ce30f0e4 /src/armnn/SubGraph.cpp
parent6870b9892dfa72af630cb91ad3e6c3d868146a49 (diff)
downloadarmnn-ff05cc50880032614675e9422ba829785f61ba14.tar.gz
IVGCVSW-2405 Rename SubGraph to SubgraphView
Change-Id: Ie50aeccf053c20c3a01a75042bbc3acd824375af Signed-off-by: Derek Lamberti <derek.lamberti@arm.com> Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Diffstat (limited to 'src/armnn/SubGraph.cpp')
-rw-r--r--src/armnn/SubGraph.cpp216
1 files changed, 0 insertions, 216 deletions
diff --git a/src/armnn/SubGraph.cpp b/src/armnn/SubGraph.cpp
deleted file mode 100644
index d0fc760c15..0000000000
--- a/src/armnn/SubGraph.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "SubGraph.hpp"
-#include "Graph.hpp"
-
-#include <boost/numeric/conversion/cast.hpp>
-
-#include <utility>
-
-namespace armnn
-{
-
-namespace
-{
-
-template <class C>
-void AssertIfNullsOrDuplicates(const C& container, const std::string& errorMessage)
-{
- using T = typename C::value_type;
- std::unordered_set<T> duplicateSet;
- std::for_each(container.begin(), container.end(), [&duplicateSet, &errorMessage](const T& i)
- {
- // Ignore unused for release builds
- boost::ignore_unused(errorMessage);
-
- // Check if the item is valid
- BOOST_ASSERT_MSG(i, errorMessage.c_str());
-
- // Check if a duplicate has been found
- BOOST_ASSERT_MSG(duplicateSet.find(i) == duplicateSet.end(), errorMessage.c_str());
-
- duplicateSet.insert(i);
- });
-}
-
-} // anonymous namespace
-
-SubGraph::SubGraph(Graph& graph)
- : m_InputSlots{}
- , m_OutputSlots{}
- , m_Layers(graph.begin(), graph.end())
- , m_ParentGraph(&graph)
-{
- CheckSubGraph();
-}
-
-SubGraph::SubGraph(Graph* parentGraph, InputSlots&& inputs, OutputSlots&& outputs, Layers&& layers)
- : m_InputSlots{inputs}
- , m_OutputSlots{outputs}
- , m_Layers{layers}
- , m_ParentGraph(parentGraph)
-{
- CheckSubGraph();
-}
-
-SubGraph::SubGraph(const SubGraph& referenceSubGraph, InputSlots&& inputs, OutputSlots&& outputs, Layers&& layers)
- : m_InputSlots{inputs}
- , m_OutputSlots{outputs}
- , m_Layers{layers}
- , m_ParentGraph(referenceSubGraph.m_ParentGraph)
-{
- CheckSubGraph();
-}
-
-SubGraph::SubGraph(const SubGraph& subGraph)
- : m_InputSlots(subGraph.m_InputSlots.begin(), subGraph.m_InputSlots.end())
- , m_OutputSlots(subGraph.m_OutputSlots.begin(), subGraph.m_OutputSlots.end())
- , m_Layers(subGraph.m_Layers.begin(), subGraph.m_Layers.end())
- , m_ParentGraph(subGraph.m_ParentGraph)
-{
- CheckSubGraph();
-}
-
-SubGraph::SubGraph(SubGraph&& subGraph)
- : m_InputSlots(std::move(subGraph.m_InputSlots))
- , m_OutputSlots(std::move(subGraph.m_OutputSlots))
- , m_Layers(std::move(subGraph.m_Layers))
- , m_ParentGraph(std::exchange(subGraph.m_ParentGraph, nullptr))
-{
- CheckSubGraph();
-}
-
-SubGraph::SubGraph(const SubGraph& referenceSubGraph, IConnectableLayer* layer)
- : m_InputSlots{}
- , m_OutputSlots{}
- , m_Layers{boost::polymorphic_downcast<Layer*>(layer)}
- , m_ParentGraph(referenceSubGraph.m_ParentGraph)
-{
- unsigned int numInputSlots = layer->GetNumInputSlots();
- m_InputSlots.resize(numInputSlots);
- for (unsigned int i = 0; i < numInputSlots; i++)
- {
- m_InputSlots.at(i) = boost::polymorphic_downcast<InputSlot*>(&(layer->GetInputSlot(i)));
- }
-
- unsigned int numOutputSlots = layer->GetNumOutputSlots();
- m_OutputSlots.resize(numOutputSlots);
- for (unsigned int i = 0; i < numOutputSlots; i++)
- {
- m_OutputSlots.at(i) = boost::polymorphic_downcast<OutputSlot*>(&(layer->GetOutputSlot(i)));
- }
-
- CheckSubGraph();
-}
-
-void SubGraph::CheckSubGraph()
-{
- // Check that the sub-graph has a valid parent graph
- BOOST_ASSERT_MSG(m_ParentGraph, "Sub-graphs must have a parent graph");
-
- // Check for invalid or duplicate input slots
- AssertIfNullsOrDuplicates(m_InputSlots, "Sub-graphs cannot contain null or duplicate input slots");
-
- // Check for invalid or duplicate output slots
- AssertIfNullsOrDuplicates(m_OutputSlots, "Sub-graphs cannot contain null or duplicate output slots");
-
- // Check for invalid or duplicate layers
- AssertIfNullsOrDuplicates(m_Layers, "Sub-graphs cannot contain null or duplicate layers");
-
- // Check that all the layers of the sub-graph belong to the parent graph
- std::for_each(m_Layers.begin(), m_Layers.end(), [&](const Layer* l)
- {
- BOOST_ASSERT_MSG(std::find(m_ParentGraph->begin(), m_ParentGraph->end(), l) != m_ParentGraph->end(),
- "Sub-graph layer is not a member of the parent graph");
- });
-}
-
-void SubGraph::Update(Graph &graph)
-{
- m_InputSlots.clear();
- m_OutputSlots.clear();
- m_Layers.assign(graph.begin(), graph.end());
- m_ParentGraph = &graph;
-
- CheckSubGraph();
-}
-
-const SubGraph::InputSlots& SubGraph::GetInputSlots() const
-{
- return m_InputSlots;
-}
-
-const SubGraph::OutputSlots& SubGraph::GetOutputSlots() const
-{
- return m_OutputSlots;
-}
-
-const InputSlot* SubGraph::GetInputSlot(unsigned int index) const
-{
- return m_InputSlots.at(index);
-}
-
-InputSlot* SubGraph::GetInputSlot(unsigned int index)
-{
- return m_InputSlots.at(index);
-}
-
-const OutputSlot* SubGraph::GetOutputSlot(unsigned int index) const
-{
- return m_OutputSlots.at(index);
-}
-
-OutputSlot* SubGraph::GetOutputSlot(unsigned int index)
-{
- return m_OutputSlots.at(index);
-}
-
-unsigned int SubGraph::GetNumInputSlots() const
-{
- return boost::numeric_cast<unsigned int>(m_InputSlots.size());
-}
-
-unsigned int SubGraph::GetNumOutputSlots() const
-{
- return boost::numeric_cast<unsigned int>(m_OutputSlots.size());
-}
-
-const SubGraph::Layers & SubGraph::GetLayers() const
-{
- return m_Layers;
-}
-
-SubGraph::Layers::iterator SubGraph::begin()
-{
- return m_Layers.begin();
-}
-
-SubGraph::Iterator SubGraph::end()
-{
- return m_Layers.end();
-}
-
-SubGraph::ConstIterator SubGraph::begin() const
-{
- return m_Layers.begin();
-}
-
-SubGraph::ConstIterator SubGraph::end() const
-{
- return m_Layers.end();
-}
-
-SubGraph::ConstIterator SubGraph::cbegin() const
-{
- return begin();
-}
-
-SubGraph::ConstIterator SubGraph::cend() const
-{
- return end();
-}
-
-} // namespace armnn