ArmNN
 24.02
GraphUtils.cpp File Reference
Include dependency graph for GraphUtils.cpp:

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.

35 {
36  return layer->GetNumInputSlots() == num;
37 }

References Layer::GetNumInputSlots().

◆ CheckNumberOfOutputSlot()

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

Definition at line 39 of file GraphUtils.cpp.

40 {
41  return layer->GetNumOutputSlots() == num;
42 }

References Layer::GetNumOutputSlots().

◆ 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.

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 }

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

◆ GetFirstLayerWithName()

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

Definition at line 22 of file GraphUtils.cpp.

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.

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.

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 }

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

armnn::TensorInfo
Definition: Tensor.hpp:152
armnn::Layer::GetOutputSlot
const OutputSlot & GetOutputSlot(unsigned int index=0) const override
Get the const output slot handle by slot index.
Definition: Layer.hpp:339
armnn::IOutputSlot::GetTensorInfo
virtual const TensorInfo & GetTensorInfo() const =0
armnn::IOutputSlot
An output connection slot for a layer.
Definition: INetwork.hpp:53
armnn::IOutputSlot::GetConnection
virtual const IInputSlot * GetConnection(unsigned int index) const =0
armnn::Graph::Print
Status Print(bool extended=false) const
Definition: Graph.cpp:68
armnn::Layer::GetNumOutputSlots
unsigned int GetNumOutputSlots() const override
Returns the number of connectable output slots.
Definition: Layer.hpp:335
armnn::Layer::GetNameStr
const std::string & GetNameStr() const
Definition: Layer.hpp:240
armnn::Layer::GetNumInputSlots
unsigned int GetNumInputSlots() const override
Returns the number of connectable input slots.
Definition: Layer.hpp:334
armnn::Graph::TopologicalSort
Graph & TopologicalSort()
Sorts layers in topological order and return this.
Definition: Graph.hpp:184
armnn::IOutputSlot::GetNumConnections
virtual unsigned int GetNumConnections() const =0