ArmNN
 21.02
OptimizeInversePermutesImpl< PermuteType > Class Template Reference

#include <OptimizeInversePermutes.hpp>

Public Member Functions

void Run (Graph &graph, InputSlot &connection) const
 Run for every connection between a base PermuteLayer and a child PermuteLayer. More...
 

Protected Member Functions

 OptimizeInversePermutesImpl ()=default
 
 ~OptimizeInversePermutesImpl ()=default
 

Detailed Description

template<typename PermuteType>
class armnn::optimizations::OptimizeInversePermutesImpl< PermuteType >

Definition at line 18 of file OptimizeInversePermutes.hpp.

Constructor & Destructor Documentation

◆ OptimizeInversePermutesImpl()

◆ ~OptimizeInversePermutesImpl()

Member Function Documentation

◆ Run()

void Run ( Graph graph,
InputSlot connection 
) const
inline

Run for every connection between a base PermuteLayer and a child PermuteLayer.

Bypasses both layers for that connection if one is the inverse of the other.

Definition at line 23 of file OptimizeInversePermutes.hpp.

References InputSlot::GetConnectedOutputSlot(), Layer::GetInputSlot(), Layer::GetOutputSlot(), InputSlot::GetOwningLayer(), OutputSlot::GetOwningLayer(), armnn::IgnoreUnused(), OutputSlot::MoveAllConnections(), OptimizeInversePermutesImpl< PermuteType >::OptimizeInversePermutesImpl(), and OptimizeInversePermutesImpl< PermuteType >::~OptimizeInversePermutesImpl().

24  {
25  IgnoreUnused(graph);
26  Layer& base = connection.GetConnectedOutputSlot()->GetOwningLayer();
27  auto child = PolymorphicDowncast<PermuteType*>(&connection.GetOwningLayer());
28 
29  if (child->IsInverse(*PolymorphicDowncast<PermuteType*>(&base)))
30  {
31  // Bypass both layers. Child will be removed as it's left unconnected.
32  // Base layer will be removed if left unconnected.
33  child->GetOutputSlot().MoveAllConnections(*base.GetInputSlot(0).GetConnectedOutputSlot());
34  }
35  }
void IgnoreUnused(Ts &&...)

The documentation for this class was generated from the following file: