ArmNN
 20.08
RankTestImpl.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "RankTestImpl.hpp"
7 
11 
12 #include <test/TensorHelpers.hpp>
13 
14 template<typename T, std::size_t n>
16  armnn::TensorInfo inputTensorInfo,
17  boost::multi_array<T, n> input,
18  armnn::IWorkloadFactory& workloadFactory,
20 {
21  IgnoreUnused(memoryManager);
22 
24  armnn::TensorInfo outputTensorInfo(outputShape, armnn::DataType::Signed32);
25 
26  LayerTestResult<int32_t , 1> ret(outputTensorInfo);
27  ret.outputExpected = MakeTensor<uint32_t, 1>(outputTensorInfo, { n });
28 
30  std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
31  std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
33 
36  AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
37  AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
38 
39  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateRank(data, info);
40 
41  inputHandle->Allocate();
42  outputHandle->Allocate();
43 
44  CopyDataToITensorHandle(inputHandle.get(), input.origin());
45 
46  workload->Execute();
47 
48  CopyDataFromITensorHandle(&ret.output[0], outputHandle.get());
49 
50  return ret;
51 }
52 
53 template<armnn::DataType ArmnnType, typename T>
55  armnn::IWorkloadFactory& workloadFactory,
57 {
58  armnn::TensorInfo inputTensorInfo({6}, ArmnnType, 1.0f, 0);
59  auto input = MakeTensor<T, 1>(inputTensorInfo, ConvertToDataType<ArmnnType>(
60  { -37.5f, -15.2f, -8.76f, -2.0f, -1.3f, -0.5f },
61  inputTensorInfo));
62 
63  return RankTest<T, 1>(inputTensorInfo, input, workloadFactory, memoryManager);
64 }
65 
66 template<armnn::DataType ArmnnType, typename T>
68  armnn::IWorkloadFactory& workloadFactory,
70 {
71  armnn::TensorInfo inputTensorInfo({1, 3}, ArmnnType, 1.0f, 0);
72  auto input = MakeTensor<T, 2>(inputTensorInfo, ConvertToDataType<ArmnnType>(
73  { -37.5f, -15.2f, -8.76f },
74  inputTensorInfo));
75 
76  return RankTest<T, 2>(inputTensorInfo, input, workloadFactory, memoryManager);
77 }
78 
79 template<armnn::DataType ArmnnType, typename T>
81  armnn::IWorkloadFactory& workloadFactory,
83 {
84  armnn::TensorInfo inputTensorInfo({1, 3, 2}, ArmnnType, 1.0f, 0);
85  auto input = MakeTensor<T, 3>(inputTensorInfo, ConvertToDataType<ArmnnType>(
86  { -37.5f, -15.2f, -8.76f, -2.0f, -1.5f, -1.3f},
87  inputTensorInfo));
88 
89  return RankTest<T, 3>(inputTensorInfo, input, workloadFactory, memoryManager);
90 }
91 
92 template<armnn::DataType ArmnnType, typename T>
94  armnn::IWorkloadFactory& workloadFactory,
96 {
97  armnn::TensorInfo inputTensorInfo({1, 3, 2, 3}, ArmnnType, 1.0f, 0);
98  auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
99  { -37.5f, -15.2f, -8.76f, -2.0f, -1.5f, -1.3f, -0.5f, -0.4f, 0.0f,
100  1.0f, 0.4f, 0.5f, 1.3f, 1.5f, 2.0f, 8.76f, 15.2f, 37.5f },
101  inputTensorInfo));
102 
103  return RankTest<T, 4>(inputTensorInfo, input, workloadFactory, memoryManager);
104 }
105 
107 RankDimSize4Test<armnn::DataType::Float16>(
108  armnn::IWorkloadFactory& workloadFactory,
110 
112 RankDimSize4Test<armnn::DataType::Float32>(
113  armnn::IWorkloadFactory& workloadFactory,
115 
117 RankDimSize4Test<armnn::DataType::QAsymmU8>(
118  armnn::IWorkloadFactory& workloadFactory,
120 
122 RankDimSize4Test<armnn::DataType::Signed32>(
123  armnn::IWorkloadFactory& workloadFactory,
125 
127 RankDimSize4Test<armnn::DataType::QSymmS16>(
128  armnn::IWorkloadFactory& workloadFactory,
130 
132 RankDimSize4Test<armnn::DataType::QSymmS8>(
133  armnn::IWorkloadFactory& workloadFactory,
135 
137 RankDimSize4Test<armnn::DataType::QAsymmS8>(
138  armnn::IWorkloadFactory& workloadFactory,
140 
142 RankDimSize4Test<armnn::DataType::BFloat16>(
143  armnn::IWorkloadFactory& workloadFactory,
145 
147 RankDimSize3Test<armnn::DataType::Float16>(
148  armnn::IWorkloadFactory& workloadFactory,
150 
152 RankDimSize3Test<armnn::DataType::Float32>(
153  armnn::IWorkloadFactory& workloadFactory,
155 
157 RankDimSize3Test<armnn::DataType::QAsymmU8>(
158  armnn::IWorkloadFactory& workloadFactory,
160 
162 RankDimSize3Test<armnn::DataType::Signed32>(
163  armnn::IWorkloadFactory& workloadFactory,
165 
167 RankDimSize3Test<armnn::DataType::QSymmS16>(
168  armnn::IWorkloadFactory& workloadFactory,
170 
172 RankDimSize3Test<armnn::DataType::QSymmS8>(
173  armnn::IWorkloadFactory& workloadFactory,
175 
177 RankDimSize3Test<armnn::DataType::QAsymmS8>(
178  armnn::IWorkloadFactory& workloadFactory,
180 
182 RankDimSize3Test<armnn::DataType::BFloat16>(
183  armnn::IWorkloadFactory& workloadFactory,
185 
187 RankDimSize2Test<armnn::DataType::Float16>(
188  armnn::IWorkloadFactory& workloadFactory,
190 
192 RankDimSize2Test<armnn::DataType::Float32>(
193  armnn::IWorkloadFactory& workloadFactory,
195 
197 RankDimSize2Test<armnn::DataType::QAsymmU8>(
198  armnn::IWorkloadFactory& workloadFactory,
200 
202 RankDimSize2Test<armnn::DataType::Signed32>(
203  armnn::IWorkloadFactory& workloadFactory,
205 
207 RankDimSize2Test<armnn::DataType::QSymmS16>(
208  armnn::IWorkloadFactory& workloadFactory,
210 
212 RankDimSize2Test<armnn::DataType::QSymmS8>(
213  armnn::IWorkloadFactory& workloadFactory,
215 
217 RankDimSize2Test<armnn::DataType::QAsymmS8>(
218  armnn::IWorkloadFactory& workloadFactory,
220 
222 RankDimSize2Test<armnn::DataType::BFloat16>(
223  armnn::IWorkloadFactory& workloadFactory,
225 
227 RankDimSize1Test<armnn::DataType::Float16>(
228  armnn::IWorkloadFactory& workloadFactory,
230 
232 RankDimSize1Test<armnn::DataType::Float32>(
233  armnn::IWorkloadFactory& workloadFactory,
235 
237 RankDimSize1Test<armnn::DataType::QAsymmU8>(
238  armnn::IWorkloadFactory& workloadFactory,
240 
242 RankDimSize1Test<armnn::DataType::Signed32>(
243  armnn::IWorkloadFactory& workloadFactory,
245 
247 RankDimSize1Test<armnn::DataType::QSymmS16>(
248  armnn::IWorkloadFactory& workloadFactory,
250 
252 RankDimSize1Test<armnn::DataType::QSymmS8>(
253  armnn::IWorkloadFactory& workloadFactory,
255 
257 RankDimSize1Test<armnn::DataType::QAsymmS8>(
258  armnn::IWorkloadFactory& workloadFactory,
260 
262 RankDimSize1Test<armnn::DataType::BFloat16>(
263  armnn::IWorkloadFactory& workloadFactory,
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
Definition: Deprecated.hpp:33
boost::multi_array< T, n > outputExpected
LayerTestResult< int32_t, 1 > RankDimSize1Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void IgnoreUnused(Ts &&...)
LayerTestResult< int32_t, 1 > RankDimSize3Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
virtual std::unique_ptr< IWorkload > CreateRank(const RankQueueDescriptor &descriptor, const WorkloadInfo &info) const
#define ARMNN_NO_DEPRECATE_WARN_END
Definition: Deprecated.hpp:34
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
boost::multi_array< T, n > output
LayerTestResult< int32_t, 1 > RankDimSize4Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
Contains information about inputs and outputs to a layer.
LayerTestResult< int32_t, 1 > RankTest(armnn::TensorInfo inputTensorInfo, boost::multi_array< T, n > input, armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int32_t, 1 > RankDimSize2Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)