ArmNN
 20.11
CommonTestUtils.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "CommonTestUtils.hpp"
7 
9 
10 using namespace armnn;
11 
12 SubgraphView::InputSlots CreateInputsFrom(const std::vector<Layer*>& layers)
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 }
24 
25 SubgraphView::OutputSlots CreateOutputsFrom(const std::vector<Layer*>& layers)
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 }
37 
39  SubgraphView::OutputSlots&& outputs,
40  SubgraphView::Layers&& layers)
41 {
42  return std::make_unique<SubgraphView>(std::move(inputs), std::move(outputs), std::move(layers));
43 }
44 
46 {
47  auto& backendRegistry = BackendRegistryInstance();
48  auto backendFactory = backendRegistry.GetFactory(backendId);
49  auto backendObjPtr = backendFactory();
50 
51  return backendObjPtr;
52 }
53 
54 armnn::TensorShape MakeTensorShape(unsigned int batches,
55  unsigned int channels,
56  unsigned int height,
57  unsigned int width,
58  armnn::DataLayout layout)
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:203
DataLayout
Definition: Types.hpp:50
std::vector< OutputSlot * > OutputSlots
BackendRegistry & BackendRegistryInstance()
Copyright (c) 2020 ARM Limited.
std::unique_ptr< SubgraphView > SubgraphViewPtr
SubgraphView::InputSlots CreateInputsFrom(const std::vector< Layer *> &layers)
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