ArmNN
 25.11
Loading...
Searching...
No Matches
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
10using 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
31SubgraphView::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
52SubgraphView::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
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
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 {
91 return TensorShape{ batches, channels, height, width };
93 return TensorShape{ batches, height, width, channels };
94 default:
95 throw InvalidArgumentException(std::string("Unsupported data layout: ") + GetDataLayoutName(layout));
96 }
97}
SubgraphView::InputSlots CreateInputsFrom(Layer *layer, std::vector< unsigned int > ignoreSlots)
SubgraphView::OutputSlots CreateOutputsFrom(const std::vector< Layer * > &layers)
SubgraphView::SubgraphViewPtr CreateSubgraphViewFrom(SubgraphView::InputSlots &&inputs, SubgraphView::OutputSlots &&outputs, SubgraphView::Layers &&layers)
armnn::TensorShape MakeTensorShape(unsigned int batches, unsigned int channels, unsigned int height, unsigned int width, armnn::DataLayout layout)
armnn::IBackendInternalUniquePtr CreateBackendObject(const armnn::BackendId &backendId)
std::vector< InputSlot >::iterator EndInputSlots()
Definition Layer.hpp:263
std::vector< InputSlot >::iterator BeginInputSlots()
Definition Layer.hpp:262
std::vector< InputSlot * > InputSlots
std::list< Layer * > Layers
std::vector< OutputSlot * > OutputSlots
std::shared_ptr< SubgraphView > SubgraphViewPtr
Copyright (c) 2021 ARM Limited and Contributors.
constexpr const char * GetDataLayoutName(DataLayout dataLayout)
std::unique_ptr< IBackendInternal > IBackendInternalUniquePtr
BackendRegistry & BackendRegistryInstance()
DataLayout
Definition Types.hpp:63