ArmNN
 21.05
GraphUtils.cpp File Reference

Go to the source code of this file.

Functions

bool GraphHasNamedLayer (const armnn::Graph &graph, const std::string &name)
 
armnn::LayerGetFirstLayerWithName (armnn::Graph &graph, const std::string &name)
 
bool CheckNumberOfInputSlot (armnn::Layer *layer, unsigned int num)
 
bool CheckNumberOfOutputSlot (armnn::Layer *layer, unsigned int num)
 
bool IsConnected (armnn::Layer *srcLayer, armnn::Layer *destLayer, unsigned int srcSlot, unsigned int destSlot, const armnn::TensorInfo &expectedTensorInfo)
 
bool CheckOrder (const armnn::Graph &graph, const armnn::Layer *first, const armnn::Layer *second)
 Checks that first comes before second in the order. More...
 

Function Documentation

◆ CheckNumberOfInputSlot()

bool CheckNumberOfInputSlot ( armnn::Layer layer,
unsigned int  num 
)

Definition at line 34 of file GraphUtils.cpp.

References Layer::GetNumInputSlots().

Referenced by BOOST_FIXTURE_TEST_CASE().

35 {
36  return layer->GetNumInputSlots() == num;
37 }
unsigned int GetNumInputSlots() const override
Returns the number of connectable input slots.
Definition: Layer.hpp:313

◆ CheckNumberOfOutputSlot()

bool CheckNumberOfOutputSlot ( armnn::Layer layer,
unsigned int  num 
)

Definition at line 39 of file GraphUtils.cpp.

References Layer::GetNumOutputSlots().

Referenced by BOOST_FIXTURE_TEST_CASE().

40 {
41  return layer->GetNumOutputSlots() == num;
42 }
unsigned int GetNumOutputSlots() const override
Returns the number of connectable output slots.
Definition: Layer.hpp:314

◆ CheckOrder()

bool CheckOrder ( const armnn::Graph graph,
const armnn::Layer first,
const armnn::Layer second 
)

Checks that first comes before second in the order.

Definition at line 68 of file GraphUtils.cpp.

References Graph::Print(), and Graph::TopologicalSort().

Referenced by BOOST_AUTO_TEST_CASE().

69 {
70  graph.Print();
71 
72  const auto& order = graph.TopologicalSort();
73 
74  auto firstPos = std::find(order.begin(), order.end(), first);
75  auto secondPos = std::find(firstPos, order.end(), second);
76 
77  return (secondPos != order.end());
78 }
Graph & TopologicalSort()
Sorts layers in topological order and return this.
Definition: Graph.hpp:177
Status Print() const
Definition: Graph.cpp:61

◆ GetFirstLayerWithName()

armnn::Layer* GetFirstLayerWithName ( armnn::Graph graph,
const std::string &  name 
)

Definition at line 22 of file GraphUtils.cpp.

Referenced by AddBroadcastReshapeLayerOptimizerTest(), BOOST_AUTO_TEST_CASE(), and BOOST_FIXTURE_TEST_CASE().

23 {
24  for (auto&& layer : graph)
25  {
26  if (layer->GetNameStr() == name)
27  {
28  return layer;
29  }
30  }
31  return nullptr;
32 }

◆ GraphHasNamedLayer()

bool GraphHasNamedLayer ( const armnn::Graph graph,
const std::string &  name 
)

Definition at line 10 of file GraphUtils.cpp.

Referenced by BOOST_AUTO_TEST_CASE().

11 {
12  for (auto&& layer : graph)
13  {
14  if (layer->GetName() == name)
15  {
16  return true;
17  }
18  }
19  return false;
20 }

◆ IsConnected()

bool IsConnected ( armnn::Layer srcLayer,
armnn::Layer destLayer,
unsigned int  srcSlot,
unsigned int  destSlot,
const armnn::TensorInfo expectedTensorInfo 
)

Definition at line 44 of file GraphUtils.cpp.

References IOutputSlot::GetConnection(), Layer::GetNameStr(), IOutputSlot::GetNumConnections(), Layer::GetOutputSlot(), and IOutputSlot::GetTensorInfo().

Referenced by BOOST_FIXTURE_TEST_CASE().

47 {
48  const armnn::IOutputSlot& outputSlot = srcLayer->GetOutputSlot(srcSlot);
49  const armnn::TensorInfo& tensorInfo = outputSlot.GetTensorInfo();
50  if (expectedTensorInfo != tensorInfo)
51  {
52  return false;
53  }
54  const unsigned int numConnections = outputSlot.GetNumConnections();
55  for (unsigned int c = 0; c < numConnections; ++c)
56  {
57  auto inputSlot = armnn::PolymorphicDowncast<const armnn::InputSlot*>(outputSlot.GetConnection(c));
58  if (inputSlot->GetOwningLayer().GetNameStr() == destLayer->GetNameStr() &&
59  inputSlot->GetSlotIndex() == destSlot)
60  {
61  return true;
62  }
63  }
64  return false;
65 }
virtual const IInputSlot * GetConnection(unsigned int index) const =0
An output connection slot for a layer.
Definition: INetwork.hpp:38
const std::string & GetNameStr() const
Definition: Layer.hpp:220
const OutputSlot & GetOutputSlot(unsigned int index=0) const override
Get the const output slot handle by slot index.
Definition: Layer.hpp:318
virtual const TensorInfo & GetTensorInfo() const =0
virtual unsigned int GetNumConnections() const =0