ArmNN
 20.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 17 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 22 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().

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

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