ArmNN
 22.11
CommonTestUtils.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "CommonTestUtils.hpp"
7 
9 
10 using namespace armnn;
11 
13  std::vector<unsigned int> ignoreSlots)
14 {
16  for (auto&& it = layer->BeginInputSlots(); it != layer->EndInputSlots(); ++it)
17  {
18  if (std::find(ignoreSlots.begin(), ignoreSlots.end(), it->GetSlotIndex()) != ignoreSlots.end())
19  {
20  continue;
21  }
22  else
23  {
24  result.push_back(&(*it));
25  }
26  }
27  return result;
28 }
29 
30 // ignoreSlots assumes you want to ignore the same slots all on layers within the vector
31 SubgraphView::InputSlots CreateInputsFrom(const std::vector<Layer*>& layers,
32  std::vector<unsigned int> ignoreSlots)
33 {
35  for (auto&& layer: layers)
36  {
37  for (auto&& it = layer->BeginInputSlots(); it != layer->EndInputSlots(); ++it)
38  {
39  if (std::find(ignoreSlots.begin(), ignoreSlots.end(), it->GetSlotIndex()) != ignoreSlots.end())
40  {
41  continue;
42  }
43  else
44  {
45  result.push_back(&(*it));
46  }
47  }
48  }
49  return result;
50 }
51 
52 SubgraphView::OutputSlots CreateOutputsFrom(const std::vector<Layer*>& layers)
53 {
55  for (auto && layer : layers)
56  {
57  for (auto&& it = layer->BeginOutputSlots(); it != layer->EndOutputSlots(); ++it)
58  {
59  result.push_back(&(*it));
60  }
61  }
62  return result;
63 }
64 
66  SubgraphView::OutputSlots&& outputs,
67  SubgraphView::Layers&& layers)
68 {
69  return std::make_unique<SubgraphView>(std::move(inputs), std::move(outputs), std::move(layers));
70 }
71 
73 {
74  auto& backendRegistry = BackendRegistryInstance();
75  auto backendFactory = backendRegistry.GetFactory(backendId);
76  auto backendObjPtr = backendFactory();
77 
78  return backendObjPtr;
79 }
80 
81 armnn::TensorShape MakeTensorShape(unsigned int batches,
82  unsigned int channels,
83  unsigned int height,
84  unsigned int width,
85  armnn::DataLayout layout)
86 {
87  using namespace armnn;
88  switch (layout)
89  {
90  case DataLayout::NCHW:
91  return TensorShape{ batches, channels, height, width };
92  case DataLayout::NHWC:
93  return TensorShape{ batches, height, width, channels };
94  default:
95  throw InvalidArgumentException(std::string("Unsupported data layout: ") + GetDataLayoutName(layout));
96  }
97 }
std::vector< InputSlot >::iterator EndInputSlots()
Definition: Layer.hpp:250
constexpr const char * GetDataLayoutName(DataLayout dataLayout)
Definition: TypesUtils.hpp:222
DataLayout
Definition: Types.hpp:62
std::vector< OutputSlot * > OutputSlots
BackendRegistry & BackendRegistryInstance()
Copyright (c) 2021 ARM Limited and Contributors.
std::vector< InputSlot >::iterator BeginInputSlots()
Definition: Layer.hpp:249
std::unique_ptr< SubgraphView > SubgraphViewPtr
std::vector< InputSlot * > InputSlots
SubgraphView::SubgraphViewPtr CreateSubgraphViewFrom(SubgraphView::InputSlots &&inputs, SubgraphView::OutputSlots &&outputs, SubgraphView::Layers &&layers)
SubgraphView::OutputSlots CreateOutputsFrom(const std::vector< Layer *> &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)
std::unique_ptr< IBackendInternal > IBackendInternalUniquePtr
std::list< Layer * > Layers
SubgraphView::InputSlots CreateInputsFrom(Layer *layer, std::vector< unsigned int > ignoreSlots)