ArmNN  NotReleased
CommonTestUtils.hpp File Reference
#include <Graph.hpp>
#include <SubgraphView.hpp>
#include <SubgraphViewSelector.hpp>
#include <armnn/BackendRegistry.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
#include <test/TestUtils.hpp>
#include <algorithm>

Go to the source code of this file.

Functions

template<typename CollectionType >
bool AreEqual (const CollectionType &lhs, const CollectionType &rhs)
 
template<typename CollectionType >
bool Contains (const CollectionType &collection, const typename CollectionType::value_type &item)
 
template<typename MapType >
bool Contains (const MapType &map, const typename MapType::key_type &key)
 
template<typename ConvolutionLayer >
void SetWeightAndBias (ConvolutionLayer *layer, const armnn::TensorInfo &weightInfo, const armnn::TensorInfo &biasInfo)
 
armnn::SubgraphView::InputSlots CreateInputsFrom (const std::vector< armnn::Layer *> &layers)
 
armnn::SubgraphView::OutputSlots CreateOutputsFrom (const std::vector< armnn::Layer *> &layers)
 
armnn::SubgraphView::SubgraphViewPtr CreateSubgraphViewFrom (armnn::SubgraphView::InputSlots &&inputs, armnn::SubgraphView::OutputSlots &&outputs, armnn::SubgraphView::Layers &&layers)
 
armnn::IBackendInternalUniquePtr CreateBackendObject (const armnn::BackendId &backendId)
 
armnn::TensorShape MakeTensorShape (unsigned int batches, unsigned int channels, unsigned int height, unsigned int width, armnn::DataLayout layout)
 

Function Documentation

◆ AreEqual()

bool AreEqual ( const CollectionType &  lhs,
const CollectionType &  rhs 
)

Definition at line 24 of file CommonTestUtils.hpp.

25 {
26  if (lhs.size() != rhs.size())
27  {
28  return false;
29  }
30 
31  auto lhs_it = std::find_if(lhs.begin(), lhs.end(), [&rhs](auto& item)
32  {
33  return std::find(rhs.begin(), rhs.end(), item) == rhs.end();
34  });
35 
36  return lhs_it == lhs.end();
37 }

◆ Contains() [1/2]

bool Contains ( const CollectionType &  collection,
const typename CollectionType::value_type &  item 
)

Definition at line 41 of file CommonTestUtils.hpp.

42 {
43  return std::find(collection.begin(), collection.end(), item) != collection.end();
44 }

◆ Contains() [2/2]

bool Contains ( const MapType &  map,
const typename MapType::key_type &  key 
)

Definition at line 48 of file CommonTestUtils.hpp.

49 {
50  return map.find(key) != map.end();
51 }

◆ CreateBackendObject()

armnn::IBackendInternalUniquePtr CreateBackendObject ( const armnn::BackendId backendId)

Definition at line 45 of file CommonTestUtils.cpp.

References armnn::BackendRegistryInstance().

Referenced by SetWeightAndBias().

46 {
47  auto& backendRegistry = BackendRegistryInstance();
48  auto backendFactory = backendRegistry.GetFactory(backendId);
49  auto backendObjPtr = backendFactory();
50 
51  return backendObjPtr;
52 }
BackendRegistry & BackendRegistryInstance()

◆ CreateInputsFrom()

armnn::SubgraphView::InputSlots CreateInputsFrom ( const std::vector< armnn::Layer *> &  layers)

Definition at line 12 of file CommonTestUtils.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and SetWeightAndBias().

13 {
15  for (auto&& layer : layers)
16  {
17  for (auto&& it = layer->BeginInputSlots(); it != layer->EndInputSlots(); ++it)
18  {
19  result.push_back(&(*it));
20  }
21  }
22  return result;
23 }
std::vector< InputSlot * > InputSlots

◆ CreateOutputsFrom()

armnn::SubgraphView::OutputSlots CreateOutputsFrom ( const std::vector< armnn::Layer *> &  layers)

Definition at line 25 of file CommonTestUtils.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and SetWeightAndBias().

26 {
28  for (auto && layer : layers)
29  {
30  for (auto&& it = layer->BeginOutputSlots(); it != layer->EndOutputSlots(); ++it)
31  {
32  result.push_back(&(*it));
33  }
34  }
35  return result;
36 }
std::vector< OutputSlot * > OutputSlots

◆ CreateSubgraphViewFrom()

Definition at line 38 of file CommonTestUtils.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and SetWeightAndBias().

41 {
42  return std::make_unique<SubgraphView>(std::move(inputs), std::move(outputs), std::move(layers));
43 }

◆ MakeTensorShape()

armnn::TensorShape MakeTensorShape ( unsigned int  batches,
unsigned int  channels,
unsigned int  height,
unsigned int  width,
armnn::DataLayout  layout 
)

Definition at line 54 of file CommonTestUtils.cpp.

References armnn::GetDataLayoutName(), armnn::NCHW, and armnn::NHWC.

Referenced by SetWeightAndBias(), and TransposeConvolution2dEndToEnd().

59 {
60  using namespace armnn;
61  switch (layout)
62  {
63  case DataLayout::NCHW:
64  return TensorShape{ batches, channels, height, width };
65  case DataLayout::NHWC:
66  return TensorShape{ batches, height, width, channels };
67  default:
68  throw InvalidArgumentException(std::string("Unsupported data layout: ") + GetDataLayoutName(layout));
69  }
70 }
constexpr const char * GetDataLayoutName(DataLayout dataLayout)
Definition: TypesUtils.hpp:186

◆ SetWeightAndBias()

void SetWeightAndBias ( ConvolutionLayer *  layer,
const armnn::TensorInfo weightInfo,
const armnn::TensorInfo biasInfo 
)

Definition at line 54 of file CommonTestUtils.hpp.

References CreateBackendObject(), CreateInputsFrom(), CreateOutputsFrom(), CreateSubgraphViewFrom(), and MakeTensorShape().

55 {
56  layer->m_Weight = std::make_unique<armnn::ScopedCpuTensorHandle>(weightInfo);
57  layer->m_Bias = std::make_unique<armnn::ScopedCpuTensorHandle>(biasInfo);
58 
59  layer->m_Weight->Allocate();
60  layer->m_Bias->Allocate();
61 }