ArmNN
 21.11
TestUtils.hpp File Reference
#include <armnn/INetwork.hpp>
#include <Graph.hpp>
#include <Runtime.hpp>

Go to the source code of this file.

Namespaces

 armnn
 Copyright (c) 2021 ARM Limited and Contributors.
 

Functions

void Connect (armnn::IConnectableLayer *from, armnn::IConnectableLayer *to, const armnn::TensorInfo &tensorInfo, unsigned int fromIndex=0, unsigned int toIndex=0)
 
template<typename LayerT >
bool IsLayerOfType (const armnn::Layer *const layer)
 
bool CheckSequence (const armnn::Graph::ConstIterator first, const armnn::Graph::ConstIterator last)
 
template<typename U , typename... Us>
bool CheckSequence (const armnn::Graph::ConstIterator first, const armnn::Graph::ConstIterator last, U &&u, Us &&... us)
 Checks each unary function in Us evaluates true for each correspondent layer in the sequence [first, last). More...
 
template<typename LayerT >
bool CheckRelatedLayers (armnn::Graph &graph, const std::list< std::string > &testRelatedLayers)
 
GraphGetGraphForTesting (IOptimizedNetwork *optNet)
 
ModelOptionsGetModelOptionsForTesting (IOptimizedNetwork *optNet)
 
profiling::ProfilingServiceGetProfilingService (armnn::RuntimeImpl *runtime)
 

Function Documentation

◆ CheckRelatedLayers()

bool CheckRelatedLayers ( armnn::Graph graph,
const std::list< std::string > &  testRelatedLayers 
)

Definition at line 34 of file TestUtils.hpp.

References armnn::GetGraphForTesting(), armnn::GetModelOptionsForTesting(), and armnn::GetProfilingService().

35 {
36  for (auto& layer : graph)
37  {
38  if (layer->GetType() == armnn::LayerEnumOf<LayerT>())
39  {
40  auto& relatedLayers = layer->GetRelatedLayerNames();
41  if (!std::equal(relatedLayers.begin(), relatedLayers.end(), testRelatedLayers.begin(),
42  testRelatedLayers.end()))
43  {
44  return false;
45  }
46  }
47  }
48 
49  return true;
50 }

◆ CheckSequence() [1/2]

bool CheckSequence ( const armnn::Graph::ConstIterator  first,
const armnn::Graph::ConstIterator  last 
)
inline

Definition at line 21 of file TestUtils.hpp.

Referenced by CheckSequence(), and TEST_SUITE().

22 {
23  return (first == last);
24 }

◆ CheckSequence() [2/2]

bool CheckSequence ( const armnn::Graph::ConstIterator  first,
const armnn::Graph::ConstIterator  last,
U &&  u,
Us &&...  us 
)

Checks each unary function in Us evaluates true for each correspondent layer in the sequence [first, last).

Definition at line 28 of file TestUtils.hpp.

References CheckSequence().

29 {
30  return u(*first) && CheckSequence(std::next(first), last, us...);
31 }
bool CheckSequence(const armnn::Graph::ConstIterator first, const armnn::Graph::ConstIterator last)
Definition: TestUtils.hpp:21

◆ Connect()

void Connect ( armnn::IConnectableLayer from,
armnn::IConnectableLayer to,
const armnn::TensorInfo tensorInfo,
unsigned int  fromIndex = 0,
unsigned int  toIndex = 0 
)

Definition at line 12 of file TestUtils.cpp.

References ARMNN_ASSERT, IOutputSlot::Connect(), armnn::FullyConnected, IConnectableLayer::GetInputSlot(), armnn::GetLayerTypeAsCString(), IConnectableLayer::GetName(), IConnectableLayer::GetOutputSlot(), IConnectableLayer::GetType(), and IOutputSlot::SetTensorInfo().

Referenced by OutputSlot::Connect(), CreatePreluLayerHelper(), CreateStackLayerHelper(), armnn::experimental::CreateStridedSliceNetwork(), OutputSlot::GetOutputHandler(), QLstmEndToEnd(), and TEST_SUITE().

14 {
15  ARMNN_ASSERT(from);
16  ARMNN_ASSERT(to);
17 
18  try
19  {
20  from->GetOutputSlot(fromIndex).Connect(to->GetInputSlot(toIndex));
21  }
22  catch (const std::out_of_range& exc)
23  {
24  std::ostringstream message;
25 
26  if (to->GetType() == armnn::LayerType::FullyConnected && toIndex == 2)
27  {
28  message << "Tried to connect bias to FullyConnected layer when bias is not enabled: ";
29  }
30 
31  message << "Failed to connect to input slot "
32  << toIndex
33  << " on "
35  << " layer "
36  << std::quoted(to->GetName())
37  << " as the slot does not exist or is unavailable";
38  throw LayerValidationException(message.str());
39  }
40 
41  from->GetOutputSlot(fromIndex).SetTensorInfo(tensorInfo);
42 }
virtual void SetTensorInfo(const TensorInfo &tensorInfo)=0
#define ARMNN_ASSERT(COND)
Definition: Assert.hpp:14
virtual LayerType GetType() const =0
Returns the armnn::LayerType of this layer.
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
virtual const char * GetName() const =0
Returns the name of the layer.
virtual int Connect(IInputSlot &destination)=0
const char * GetLayerTypeAsCString(LayerType type)

◆ IsLayerOfType()

bool IsLayerOfType ( const armnn::Layer *const  layer)

Definition at line 16 of file TestUtils.hpp.

References Layer::GetType().

17 {
18  return (layer->GetType() == armnn::LayerEnumOf<LayerT>());
19 }
LayerType GetType() const override
Returns the armnn::LayerType of this layer.
Definition: Layer.hpp:265