blob: df79e46dee19371674a81665930450622504237c [file] [log] [blame]
telsoa014fcda012018-03-09 14:13:49 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beckecb56cd2018-09-05 12:52:57 +01003// SPDX-License-Identifier: MIT
telsoa014fcda012018-03-09 14:13:49 +00004//
5#pragma once
6
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00007#include <armnn/ArmNN.hpp>
8#include <armnn/Tensor.hpp>
9
10#include <Half.hpp>
Francis Murtagh46c09d02019-05-28 08:15:28 +010011#include "TensorCopyUtils.hpp"
12#include "WorkloadTestUtils.hpp"
telsoa014fcda012018-03-09 14:13:49 +000013
Francis Murtagh46c09d02019-05-28 08:15:28 +010014#include <backendsCommon/CpuTensorHandle.hpp>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000015#include <backendsCommon/IBackendInternal.hpp>
16#include <backendsCommon/IMemoryManager.hpp>
Francis Murtagh46c09d02019-05-28 08:15:28 +010017#include <reference/workloads/Decoders.hpp>
18#include <reference/workloads/Encoders.hpp>
19#include <test/TensorHelpers.hpp>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000020
telsoa014fcda012018-03-09 14:13:49 +000021#include <boost/multi_array.hpp>
22#include <boost/assert.hpp>
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000023
telsoa014fcda012018-03-09 14:13:49 +000024#include <array>
25
telsoa01c577f2c2018-08-31 09:22:23 +010026// Layer callables.
telsoa014fcda012018-03-09 14:13:49 +000027
28namespace armnn
29{
30class IWorkloadFactory;
31}
32
33template <std::size_t n>
34boost::array<unsigned int, n> GetTensorShapeAsArray(const armnn::TensorInfo& tensorInfo)
35{
36 BOOST_ASSERT_MSG(n == tensorInfo.GetNumDimensions(),
37 "Attempting to construct a shape array of mismatching size");
38
39 boost::array<unsigned int, n> shape;
40 for (unsigned int i = 0; i < n; i++)
41 {
42 shape[i] = tensorInfo.GetShape()[i];
43 }
44 return shape;
45}
46
47template <typename T, std::size_t n>
48struct LayerTestResult
49{
50 LayerTestResult(const armnn::TensorInfo& outputInfo)
51 {
52 auto shape( GetTensorShapeAsArray<n>(outputInfo) );
53 output.resize(shape);
54 outputExpected.resize(shape);
55 supported = true;
kevmay012b4d88e2019-01-24 14:05:09 +000056 compareBoolean = false;
telsoa014fcda012018-03-09 14:13:49 +000057 }
58
59 boost::multi_array<T, n> output;
60 boost::multi_array<T, n> outputExpected;
61 bool supported;
kevmay012b4d88e2019-01-24 14:05:09 +000062 bool compareBoolean;
telsoa014fcda012018-03-09 14:13:49 +000063};
64
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000065LayerTestResult<float, 4> SimpleConvolution2d3x5Test(
66 armnn::IWorkloadFactory& workloadFactory,
67 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
68 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +000069 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +000070
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000071LayerTestResult<float, 4> SimpleConvolution2d3x3Test(
72 armnn::IWorkloadFactory& workloadFactory,
73 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
74 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +000075 const armnn::DataLayout layout);
Francis Murtaghd59116e2018-10-04 16:03:07 +010076
Mike Kelly7332ed82018-12-20 17:03:06 +000077LayerTestResult<float, 4> SimpleConvolution2d3x3Stride2x2Test(
78 armnn::IWorkloadFactory& workloadFactory,
79 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
80 bool biasEnabled,
81 const armnn::DataLayout layout);
82
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000083LayerTestResult<float, 4> SimpleConvolution2d3x3NhwcTest(
84 armnn::IWorkloadFactory& workloadFactory,
85 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
86 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +000087
88LayerTestResult<float, 4>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000089Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest(
90 armnn::IWorkloadFactory& workloadFactory,
91 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +000092 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +000093
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000094LayerTestResult<float, 4> Convolution2dAsymmetricPaddingTest(
95 armnn::IWorkloadFactory& workloadFactory,
96 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +000097 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +000098
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000099LayerTestResult<float, 4> Convolution1dTest(
100 armnn::IWorkloadFactory& workloadFactory,
101 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
102 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000103
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000104LayerTestResult<uint8_t, 4> Convolution1dUint8Test(
105 armnn::IWorkloadFactory& workloadFactory,
106 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
107 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000108
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000109LayerTestResult<float, 4> DepthwiseConvolution2dTest(
110 armnn::IWorkloadFactory& workloadFactory,
111 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
112 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000113 const armnn::DataLayout layout);
Nikhil Rajcec6b652018-10-12 13:51:57 +0100114
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000115LayerTestResult<float, 4> DepthwiseConvolution2dDepthNhwcTest(
116 armnn::IWorkloadFactory& workloadFactory,
117 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
118 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000119
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000120LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul1Test(
121 armnn::IWorkloadFactory& workloadFactory,
122 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
123 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000124 const armnn::DataLayout layout);
surmeh013537c2c2018-05-18 16:31:43 +0100125
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000126LayerTestResult<float, 4> DepthwiseConvolution2dAsymmetricTest(
127 armnn::IWorkloadFactory& workloadFactory,
128 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
129 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000130 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +0000131
Bruno Goncalves22972f02019-04-26 21:03:24 -0300132LayerTestResult<float, 4> SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest(armnn::IWorkloadFactory& workloadFactory,
133 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
134
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000135LayerTestResult<float, 4> CompareDepthwiseConvolution2dFloatTest(
136 armnn::IWorkloadFactory& workloadFactory,
137 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
138 armnn::IWorkloadFactory& refWorkloadFactory,
139 const armnn::DataLayout layout);
140
141LayerTestResult<uint8_t, 4> CompareDepthwiseConvolution2dUint8Test(
142 armnn::IWorkloadFactory& workloadFactory,
143 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
144 armnn::IWorkloadFactory& refWorkloadFactory,
145 const armnn::DataLayout layout);
146
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000147LayerTestResult<float, 4> SimpleMaxPooling2dSize2x2Stride2x2Test(
148 armnn::IWorkloadFactory& workloadFactory,
149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
150 bool forceNoPadding);
James Conroy45a9b772018-10-31 11:47:53 +0000151
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000152LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize2x2Stride2x2Uint8Test(
153 armnn::IWorkloadFactory& workloadFactory,
154 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
155 bool forceNoPadding);
James Conroy45a9b772018-10-31 11:47:53 +0000156
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000157LayerTestResult<float, 4> SimpleMaxPooling2dSize3x3Stride2x4Test(
158 armnn::IWorkloadFactory& workloadFactory,
159 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
160 bool forceNoPadding);
161
162LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize3x3Stride2x4Uint8Test(
163 armnn::IWorkloadFactory& workloadFactory,
164 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
165 bool forceNoPadding );
166
167LayerTestResult<float, 4> IgnorePaddingSimpleMaxPooling2dTest(
168 armnn::IWorkloadFactory& workloadFactory,
169 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
170
171LayerTestResult<uint8_t, 4> IgnorePaddingSimpleMaxPooling2dUint8Test(
172 armnn::IWorkloadFactory& workloadFactory,
173 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
174
175LayerTestResult<float, 4> IgnorePaddingMaxPooling2dSize3Test(
176 armnn::IWorkloadFactory& workloadFactory,
177 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
178
179LayerTestResult<uint8_t, 4> IgnorePaddingMaxPooling2dSize3Uint8Test(
180 armnn::IWorkloadFactory& workloadFactory,
181 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
182
183LayerTestResult<float, 4> SimpleMaxPooling2dTest(
184 armnn::IWorkloadFactory& workloadFactory,
185 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000186 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000187
188LayerTestResult<uint8_t, 4> SimpleMaxPooling2dUint8Test(
189 armnn::IWorkloadFactory& workloadFactory,
190 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000191 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000192
193LayerTestResult<float, 4> SimpleAveragePooling2dTest(
194 armnn::IWorkloadFactory& workloadFactory,
195 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000196 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000197
198LayerTestResult<uint8_t, 4> SimpleAveragePooling2dUint8Test(
199 armnn::IWorkloadFactory& workloadFactory,
200 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000201 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000202
203LayerTestResult<float, 4> IgnorePaddingAveragePooling2dSize3x2Stride2x2Test(
204 armnn::IWorkloadFactory& workloadFactory,
205 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
206 bool forceNoPadding);
207
208LayerTestResult<float, 4> IgnorePaddingSimpleAveragePooling2dTest(
209 armnn::IWorkloadFactory& workloadFactory,
210 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
211
212LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dUint8Test(
213 armnn::IWorkloadFactory& workloadFactory,
214 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
215
216LayerTestResult<float, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingTest(
217 armnn::IWorkloadFactory& workloadFactory,
218 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
219
telsoa014fcda012018-03-09 14:13:49 +0000220LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingUint8Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000221 armnn::IWorkloadFactory& workloadFactory,
222 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000223
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000224LayerTestResult<float, 4> IgnorePaddingAveragePooling2dSize3Test(
225 armnn::IWorkloadFactory& workloadFactory,
226 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000227
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000228LayerTestResult<uint8_t, 4> IgnorePaddingAveragePooling2dSize3Uint8Test(
229 armnn::IWorkloadFactory& workloadFactory,
230 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000231
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000232LayerTestResult<float, 4> SimpleL2Pooling2dTest(
233 armnn::IWorkloadFactory& workloadFactory,
234 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000235 const armnn::DataLayout dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000236
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000237LayerTestResult<uint8_t, 4> SimpleL2Pooling2dUint8Test(
238 armnn::IWorkloadFactory& workloadFactory,
239 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000240 const armnn::DataLayout dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000241
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000242LayerTestResult<float, 4> L2Pooling2dSize3Stride1Test(
243 armnn::IWorkloadFactory& workloadFactory,
244 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000245
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000246LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride1Uint8Test(
247 armnn::IWorkloadFactory& workloadFactory,
248 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000249
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000250LayerTestResult<float, 4> L2Pooling2dSize3Stride3Test(
251 armnn::IWorkloadFactory& workloadFactory,
252 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000253
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000254LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride3Uint8Test(
255 armnn::IWorkloadFactory& workloadFactory,
256 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000257
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000258LayerTestResult<float, 4> L2Pooling2dSize3Stride4Test(
259 armnn::IWorkloadFactory& workloadFactory,
260 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000261
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000262LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride4Uint8Test(
263 armnn::IWorkloadFactory& workloadFactory,
264 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000265
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000266LayerTestResult<float, 4> L2Pooling2dSize7Test(
267 armnn::IWorkloadFactory& workloadFactory,
268 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000269
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000270LayerTestResult<uint8_t, 4> L2Pooling2dSize7Uint8Test(
271 armnn::IWorkloadFactory& workloadFactory,
272 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000273
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000274LayerTestResult<float, 4> L2Pooling2dSize9Test(
275 armnn::IWorkloadFactory& workloadFactory,
276 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000277
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000278LayerTestResult<uint8_t, 4> L2Pooling2dSize9Uint8Test(
279 armnn::IWorkloadFactory& workloadFactory,
280 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
281
282LayerTestResult<float, 4> LargeTensorsAveragePooling2dTest(
283 armnn::IWorkloadFactory& workloadFactory,
284 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
285
286LayerTestResult<uint8_t, 4> LargeTensorsAveragePooling2dUint8Test(
287 armnn::IWorkloadFactory& workloadFactory,
288 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
289
290LayerTestResult<float, 4> IgnorePaddingSimpleL2Pooling2dTest(
291 armnn::IWorkloadFactory& workloadFactory,
292 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
293
294LayerTestResult<uint8_t, 4> IgnorePaddingSimpleL2Pooling2dUint8Test(
295 armnn::IWorkloadFactory& workloadFactory,
296 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
297
298LayerTestResult<float, 4> IgnorePaddingL2Pooling2dSize3Test(
299 armnn::IWorkloadFactory& workloadFactory,
300 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
301
302LayerTestResult<uint8_t, 4> IgnorePaddingL2Pooling2dSize3Uint8Test(
303 armnn::IWorkloadFactory& workloadFactory,
304 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
305
306LayerTestResult<float, 4> AsymmetricNonSquarePooling2dTest(
307 armnn::IWorkloadFactory& workloadFactory,
308 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
309
310LayerTestResult<uint8_t, 4> AsymmetricNonSquarePooling2dUint8Test(
311 armnn::IWorkloadFactory& workloadFactory,
312 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
313
314LayerTestResult<float, 4> ComparePooling2dTest(
315 armnn::IWorkloadFactory& workloadFactory,
316 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
317 armnn::IWorkloadFactory& refWorkloadFactory,
318 armnn::PoolingAlgorithm poolingType);
319
320LayerTestResult<uint8_t, 4> ComparePooling2dUint8Test(
321 armnn::IWorkloadFactory& workloadFactory,
322 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
323 armnn::IWorkloadFactory& refWorkloadFactory,
324 armnn::PoolingAlgorithm poolingType);
325
326LayerTestResult<float, 4> ConstantLinearActivationTest(
327 armnn::IWorkloadFactory& workloadFactory,
328 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
329
330LayerTestResult<float, 4> SimpleNormalizationAcrossTest(
331 armnn::IWorkloadFactory& workloadFactory,
332 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
333
334LayerTestResult<float, 4> SimpleNormalizationWithinTest(
335 armnn::IWorkloadFactory& workloadFactory,
336 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
337
338LayerTestResult<float,4> SimpleNormalizationAcrossNhwcTest(
339 armnn::IWorkloadFactory& workloadFactory,
340 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
341
342LayerTestResult<float, 2> SimpleSoftmaxTest(
343 armnn::IWorkloadFactory& workloadFactory,
344 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
345 float beta);
346
Narumol Prangnawarat65d30962019-03-14 11:55:03 +0000347LayerTestResult<float, 3> Simple3dSoftmaxTest(
348 armnn::IWorkloadFactory& workloadFactory,
349 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
350 float beta);
351
352LayerTestResult<float, 4> Simple4dSoftmaxTest(
353 armnn::IWorkloadFactory& workloadFactory,
354 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
355 float beta);
356
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000357LayerTestResult<uint8_t, 2> SimpleSoftmaxUint8Test(
358 armnn::IWorkloadFactory& workloadFactory,
359 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
360 float beta);
361
Narumol Prangnawarat65d30962019-03-14 11:55:03 +0000362LayerTestResult<uint8_t,3> Simple3dSoftmaxUint8Test(
363 armnn::IWorkloadFactory& workloadFactory,
364 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
365 float beta);
366
367LayerTestResult<uint8_t,4> Simple4dSoftmaxUint8Test(
368 armnn::IWorkloadFactory& workloadFactory,
369 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
370 float beta);
371
nikraj01248683f2019-05-29 16:46:50 +0100372LayerTestResult<int16_t,2> SimpleSoftmaxUint16Test(
373 armnn::IWorkloadFactory& workloadFactory,
374 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
375 float beta);
376
377LayerTestResult<int16_t,3> Simple3dSoftmaxUint16Test(
378 armnn::IWorkloadFactory& workloadFactory,
379 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
380 float beta);
381
382LayerTestResult<int16_t,4> Simple4dSoftmaxUint16Test(
383 armnn::IWorkloadFactory& workloadFactory,
384 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
385 float beta);
386
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000387LayerTestResult<float, 4> SimpleSigmoidTest(
388 armnn::IWorkloadFactory& workloadFactory,
389 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
390
Nina Drozd8ed4b8c2019-05-29 10:41:04 +0100391template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
392LayerTestResult<T, 4> SimpleReshapeTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000393 armnn::IWorkloadFactory& workloadFactory,
394 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
395
396LayerTestResult<float, 4> SimpleFloorTest(
397 armnn::IWorkloadFactory& workloadFactory,
398 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
399
400LayerTestResult<float, 1> Concatenation1dTest(
401 armnn::IWorkloadFactory& workloadFactory,
402 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
403
404LayerTestResult<float, 2> Concatenation2dDim0Test(
405 armnn::IWorkloadFactory& workloadFactory,
406 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
407
408LayerTestResult<float, 2> Concatenation2dDim1Test(
409 armnn::IWorkloadFactory& workloadFactory,
410 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
411
412LayerTestResult<float, 2> Concatenation2dDim0DiffInputDimsTest(
413 armnn::IWorkloadFactory& workloadFactory,
414 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
415
416LayerTestResult<float, 2> Concatenation2dDim1DiffInputDimsTest(
417 armnn::IWorkloadFactory& workloadFactory,
418 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
419
420LayerTestResult<float, 3> Concatenation3dDim0Test(
421 armnn::IWorkloadFactory& workloadFactory,
422 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
423
424LayerTestResult<float, 3> Concatenation3dDim1Test(
425 armnn::IWorkloadFactory& workloadFactory,
426 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
427
428LayerTestResult<float, 3> Concatenation3dDim2Test(
429 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +0000430 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
431 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000432
433LayerTestResult<float, 3> Concatenation3dDim0DiffInputDimsTest(
434 armnn::IWorkloadFactory& workloadFactory,
435 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
436
437LayerTestResult<float, 3> Concatenation3dDim1DiffInputDimsTest(
438 armnn::IWorkloadFactory& workloadFactory,
439 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
440
441LayerTestResult<float, 3> Concatenation3dDim2DiffInputDimsTest(
442 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +0000443 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
444 bool useSubtensor);
445
446LayerTestResult<float, 4> Concatenation4dDim0Test(
447 armnn::IWorkloadFactory& workloadFactory,
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000448 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
449
narpra015cdda352018-11-19 15:30:27 +0000450LayerTestResult<float, 4> Concatenation4dDim1Test(
451 armnn::IWorkloadFactory& workloadFactory,
452 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
453
454LayerTestResult<float, 4> Concatenation4dDim2Test(
455 armnn::IWorkloadFactory& workloadFactory,
456 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
457
458LayerTestResult<float, 4> Concatenation4dDim3Test(
459 armnn::IWorkloadFactory& workloadFactory,
460 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
461 bool useSubtensor);
462
463LayerTestResult<float, 4> Concatenation4dDiffShapeDim0Test(
464 armnn::IWorkloadFactory& workloadFactory,
465 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
466
467LayerTestResult<float, 4> Concatenation4dDiffShapeDim1Test(
468 armnn::IWorkloadFactory& workloadFactory,
469 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
470
471LayerTestResult<float, 4> Concatenation4dDiffShapeDim2Test(
472 armnn::IWorkloadFactory& workloadFactory,
473 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
474
475LayerTestResult<float, 4> Concatenation4dDiffShapeDim3Test(
476 armnn::IWorkloadFactory& workloadFactory,
477 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
478 bool useSubtensor);
479
480LayerTestResult<uint8_t, 4> Concatenation4dDim0Uint8Test(
481 armnn::IWorkloadFactory& workloadFactory,
482 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
483
484LayerTestResult<uint8_t, 4> Concatenation4dDim1Uint8Test(
485 armnn::IWorkloadFactory& workloadFactory,
486 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
487
488LayerTestResult<uint8_t, 4> Concatenation4dDim2Uint8Test(
489 armnn::IWorkloadFactory& workloadFactory,
490 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
491
492LayerTestResult<uint8_t, 4> Concatenation4dDim3Uint8Test(
493 armnn::IWorkloadFactory& workloadFactory,
494 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
495 bool useSubtensor);
496
497LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim0Uint8Test(
498 armnn::IWorkloadFactory& workloadFactory,
499 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
500
501LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim1Uint8Test(
502 armnn::IWorkloadFactory& workloadFactory,
503 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
504
505LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim2Uint8Test(
506 armnn::IWorkloadFactory& workloadFactory,
507 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
508
509LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim3Uint8Test(
510 armnn::IWorkloadFactory& workloadFactory,
511 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
512 bool useSubtensor);
513
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000514LayerTestResult<uint8_t, 4> SimpleSigmoidUint8Test(
515 armnn::IWorkloadFactory& workloadFactory,
516 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
517
Teresa Charlin18515e22019-04-24 10:17:46 +0100518LayerTestResult<int16_t, 4> SimpleSigmoidInt16Test(
519 armnn::IWorkloadFactory& workloadFactory,
520 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
521
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000522LayerTestResult<float, 4> CompareConvolution2dTest(
523 armnn::IWorkloadFactory& workloadFactory,
524 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
telsoa014fcda012018-03-09 14:13:49 +0000525 armnn::IWorkloadFactory& refWorkloadFactory);
526
527template<typename T>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000528LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest(
529 armnn::IWorkloadFactory& workloadFactory,
530 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
531 armnn::IWorkloadFactory& refWorkloadFactory,
Matthew Bentham8800c002018-11-19 13:19:28 +0000532 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +0000533
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000534LayerTestResult<float, 4> CompareNormalizationTest(
535 armnn::IWorkloadFactory& workloadFactory,
536 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
537 armnn::IWorkloadFactory& refWorkloadFactory,
538 armnn::NormalizationAlgorithmChannel normChannel,
539 armnn::NormalizationAlgorithmMethod normMethod);
telsoa014fcda012018-03-09 14:13:49 +0000540
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000541LayerTestResult<float, 2> CompareSoftmaxTest(
542 armnn::IWorkloadFactory& workloadFactory,
543 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
telsoa014fcda012018-03-09 14:13:49 +0000544 armnn::IWorkloadFactory& refWorkloadFactory,
545 float beta);
546
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000547LayerTestResult<float, 2> FullyConnectedFloat32Test(
548 armnn::IWorkloadFactory& workloadFactory,
549 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
550 bool biasEnabled,
551 bool transposeWeights);
telsoa014fcda012018-03-09 14:13:49 +0000552
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000553std::vector<LayerTestResult<float, 3>> SplitterTest(
554 armnn::IWorkloadFactory& workloadFactory,
555 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
David Beck5cd01f32018-09-12 16:00:08 +0100556
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000557LayerTestResult<float, 3> CopyViaSplitterTest(
558 armnn::IWorkloadFactory& workloadFactory,
559 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000560
Jim Flynn4ed6c832019-05-20 11:02:46 +0100561LayerTestResult<float, 3> ConcatTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000562 armnn::IWorkloadFactory& workloadFactory,
563 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000564
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000565LayerTestResult<float, 4> AdditionTest(
566 armnn::IWorkloadFactory& workloadFactory,
567 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000568
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000569LayerTestResult<float, 4> AdditionBroadcast1ElementTest(
570 armnn::IWorkloadFactory& workloadFactory,
571 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000572
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000573LayerTestResult<float, 4> AdditionBroadcastTest(
574 armnn::IWorkloadFactory& workloadFactory,
575 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000576
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000577LayerTestResult<float, 4> CompareAdditionTest(
578 armnn::IWorkloadFactory& workloadFactory,
579 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
580 armnn::IWorkloadFactory& refWorkloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000581
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000582LayerTestResult<float, 4> SubtractionTest(
583 armnn::IWorkloadFactory& workloadFactory,
584 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000585
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000586LayerTestResult<float, 4> SubtractionBroadcast1ElementTest(
587 armnn::IWorkloadFactory& workloadFactory,
588 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000589
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000590LayerTestResult<float, 4> SubtractionBroadcastTest(
591 armnn::IWorkloadFactory& workloadFactory,
592 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000593
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000594LayerTestResult<float, 4> CompareActivationTest(
595 armnn::IWorkloadFactory& workloadFactory,
596 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
597 armnn::IWorkloadFactory& refWorkloadFactory,
598 armnn::ActivationFunction f,
599 unsigned int batchSize);
telsoa014fcda012018-03-09 14:13:49 +0000600
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000601LayerTestResult<float, 4> DivisionTest(
602 armnn::IWorkloadFactory& workloadFactory,
603 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000604
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000605LayerTestResult<float, 4> DivisionByZeroTest(
606 armnn::IWorkloadFactory& workloadFactory,
607 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +0100608
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000609LayerTestResult<float, 4> DivisionBroadcast1ElementTest(
610 armnn::IWorkloadFactory& workloadFactory,
611 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +0100612
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000613LayerTestResult<float, 4> DivisionBroadcast1DVectorTest(
614 armnn::IWorkloadFactory& workloadFactory,
615 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa01c577f2c2018-08-31 09:22:23 +0100616
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000617LayerTestResult<float, 4> MultiplicationTest(
618 armnn::IWorkloadFactory& workloadFactory,
619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa01c577f2c2018-08-31 09:22:23 +0100620
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000621LayerTestResult<float, 4> MultiplicationBroadcast1ElementTest(
622 armnn::IWorkloadFactory& workloadFactory,
623 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra011e4c31d2018-09-28 11:07:51 +0100624
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000625LayerTestResult<float, 4> MultiplicationBroadcast1DVectorTest(
626 armnn::IWorkloadFactory& workloadFactory,
627 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra011e4c31d2018-09-28 11:07:51 +0100628
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000629LayerTestResult<float, 4> CompareMultiplicationTest(
630 armnn::IWorkloadFactory& workloadFactory,
631 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
632 armnn::IWorkloadFactory& refWorkloadFactory);
Matteo Martincigh28dcab62018-10-19 16:40:03 +0100633
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000634LayerTestResult<float, 4> BatchNormTest(
635 armnn::IWorkloadFactory& workloadFactory,
636 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000637
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000638LayerTestResult<float, 4> BatchNormNhwcTest(
639 armnn::IWorkloadFactory& workloadFactory,
640 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000641
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000642LayerTestResult<float, 4> CompareBatchNormTest(
643 armnn::IWorkloadFactory& workloadFactory,
644 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
645 armnn::IWorkloadFactory& refWorkloadFactory);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000646
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000647LayerTestResult<float, 4> BoundedReLuUpperAndLowerBoundTest(
648 armnn::IWorkloadFactory& workloadFactory,
649 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000650
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000651LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperAndLowerBoundTest(
652 armnn::IWorkloadFactory& workloadFactor,
653 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManagery);
Éanna Ó Catháin4e1e1362018-11-12 11:36:34 +0000654
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000655LayerTestResult<float, 4> BoundedReLuUpperBoundOnlyTest(
656 armnn::IWorkloadFactory& workloadFactory,
657 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Éanna Ó Catháin4e1e1362018-11-12 11:36:34 +0000658
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000659LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperBoundOnlyTest(
660 armnn::IWorkloadFactory& workloadFactory,
661 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Éanna Ó Catháin262553e2018-11-14 11:26:23 +0000662
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000663LayerTestResult<float, 4> CompareBoundedReLuTest(
664 armnn::IWorkloadFactory& workloadFactory,
665 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
666 armnn::IWorkloadFactory& refWorkloadFactory,
667 float upperBound,
668 float lowerBound);
669
Teresa Charlin18515e22019-04-24 10:17:46 +0100670
671LayerTestResult<int16_t, 4> ReLuInt16Test(
672 armnn::IWorkloadFactory& workloadFactory,
673 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
674
675LayerTestResult<int16_t, 4> BoundedReLuInt16Test(
676 armnn::IWorkloadFactory& workloadFactory,
677 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
678
679LayerTestResult<int16_t, 4> SoftReLuInt16Test(
680 armnn::IWorkloadFactory& workloadFactory,
681 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
682
683LayerTestResult<int16_t, 4> LeakyReLuInt16Test(
684 armnn::IWorkloadFactory& workloadFactory,
685 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
686
687LayerTestResult<int16_t, 4> AbsInt16Test(
688 armnn::IWorkloadFactory& workloadFactory,
689 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
690
691LayerTestResult<int16_t, 4> SqrtInt16Test(
692 armnn::IWorkloadFactory& workloadFactory,
693 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
694
695LayerTestResult<int16_t, 4> SquareInt16Test(
696 armnn::IWorkloadFactory& workloadFactory,
697 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
698
699LayerTestResult<int16_t, 4> TanhInt16Test(
700 armnn::IWorkloadFactory& workloadFactory,
701 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
702
703
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000704// Tests that the output should be identical to the input when the output dimensions match the input ones.
705LayerTestResult<float, 4> ResizeBilinearNopTest(
706 armnn::IWorkloadFactory& workloadFactory,
707 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000708 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000709
710// Tests the behaviour of the resize bilinear operation when rescaling a 2x2 image into a 1x1 image.
711LayerTestResult<float, 4> SimpleResizeBilinearTest(
712 armnn::IWorkloadFactory& workloadFactory,
713 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000714 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000715
716// Tests the resize bilinear for minification of a square input matrix (also: input dimensions are a
717// multiple of output dimensions).
718LayerTestResult<float, 4> ResizeBilinearSqMinTest(
719 armnn::IWorkloadFactory& workloadFactory,
720 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000721 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000722
723// Tests the resize bilinear for minification (output dimensions smaller than input dimensions).
724LayerTestResult<float, 4> ResizeBilinearMinTest(
725 armnn::IWorkloadFactory& workloadFactory,
726 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000727 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000728
729// Tests the resize bilinear for magnification (output dimensions bigger than input dimensions).
730LayerTestResult<float, 4> ResizeBilinearMagTest(
731 armnn::IWorkloadFactory& workloadFactory,
732 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000733 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000734
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000735LayerTestResult<float, 2> Rsqrt2dTestCommon(
736 armnn::IWorkloadFactory& workloadFactory,
737 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
738 const armnn::TensorInfo inputTensorInfo,
739 const armnn::TensorInfo outputTensorInfo,
740 std::vector<float> inputValues,
741 std::vector<float> expectedOutputValues);
742
743LayerTestResult<float, 2> Rsqrt2dTest(
744 armnn::IWorkloadFactory& workloadFactory,
745 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
746
747LayerTestResult<float, 3> Rsqrt3dTest(
748 armnn::IWorkloadFactory& workloadFactory,
749 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
750
751LayerTestResult<float, 2> RsqrtZeroTest(
752 armnn::IWorkloadFactory& workloadFactory,
753 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
754
755LayerTestResult<float, 2> RsqrtNegativeTest(
756 armnn::IWorkloadFactory& workloadFactory,
757 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
758
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000759LayerTestResult<float, 4> BatchNormTest(
760 armnn::IWorkloadFactory& workloadFactory,
761 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
762
763LayerTestResult<float, 4> BatchNormNhwcTest(
764 armnn::IWorkloadFactory& workloadFactory,
765 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
766
767LayerTestResult<float, 2> FakeQuantizationTest(
768 armnn::IWorkloadFactory& workloadFactory,
769 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
770
771LayerTestResult<float, 4> L2Normalization1dTest(
772 armnn::IWorkloadFactory& workloadFactory,
773 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000774 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000775
776LayerTestResult<float, 4> L2Normalization2dTest(
777 armnn::IWorkloadFactory& workloadFactory,
778 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000779 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000780
781LayerTestResult<float, 4> L2Normalization3dTest(
782 armnn::IWorkloadFactory& workloadFactory,
783 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000784 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000785
786LayerTestResult<float, 4> L2Normalization4dTest(
787 armnn::IWorkloadFactory& workloadFactory,
788 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000789 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000790
791LayerTestResult<float, 4> ConstantTest(
792 armnn::IWorkloadFactory& workloadFactory,
793 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
794
Nina Drozd58ef2c62019-05-16 12:09:18 +0100795LayerTestResult<uint8_t, 4> ConstantUint8SimpleQuantizationScaleNoOffsetTest(
796 armnn::IWorkloadFactory& workloadFactory,
797 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
798
799LayerTestResult<int16_t, 4> ConstantInt16SimpleQuantizationScaleNoOffsetTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000800 armnn::IWorkloadFactory& workloadFactory,
801 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
802
803LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
804 armnn::IWorkloadFactory& workloadFactory,
805 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
806 float upperBound);
807
808LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
809 armnn::IWorkloadFactory& workloadFactory,
810 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
811 float upperBound,
812 float lowerBound);
813
Francis Murtagh46c09d02019-05-28 08:15:28 +0100814template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
815LayerTestResult<T, 2> FullyConnectedTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000816 armnn::IWorkloadFactory& workloadFactory,
817 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
818 bool biasEnabled);
819
820std::vector<LayerTestResult<uint8_t, 3>> SplitterUint8Test(
821 armnn::IWorkloadFactory& workloadFactory,
822 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
823
Ruomei Yan25339c32019-05-28 16:48:20 +0100824std::vector<LayerTestResult<int16_t, 3>> SplitterInt16Test(
825 armnn::IWorkloadFactory& workloadFactory,
826 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
827
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000828LayerTestResult<uint8_t, 3> CopyViaSplitterUint8Test(
829 armnn::IWorkloadFactory& workloadFactory,
830 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
831
Ruomei Yan25339c32019-05-28 16:48:20 +0100832LayerTestResult<int16_t, 3> CopyViaSplitterInt16Test(
833 armnn::IWorkloadFactory& workloadFactory,
834 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
835
Jim Flynn4ed6c832019-05-20 11:02:46 +0100836LayerTestResult<uint8_t, 3> ConcatUint8Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000837 armnn::IWorkloadFactory& workloadFactory,
838 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
839
Jim Flynn4ed6c832019-05-20 11:02:46 +0100840LayerTestResult<uint16_t, 3> ConcatUint16Test(
Jim Flynncbb66aa2019-05-15 13:03:54 +0100841 armnn::IWorkloadFactory& workloadFactory,
842 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
843
Jim Flynn4ed6c832019-05-20 11:02:46 +0100844LayerTestResult<uint8_t, 3> ConcatUint8DifferentQParamsTest(
Jim Flynncbb66aa2019-05-15 13:03:54 +0100845 armnn::IWorkloadFactory& workloadFactory,
846 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Ferran Balaguerb2845652019-02-27 09:42:06 +0000847
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000848LayerTestResult<uint8_t, 4> AdditionUint8Test(
849 armnn::IWorkloadFactory& workloadFactory,
850 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
851
852LayerTestResult<uint8_t, 4> AdditionBroadcast1ElementUint8Test(
853 armnn::IWorkloadFactory& workloadFactory,
854 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
855
856LayerTestResult<uint8_t, 4> AdditionBroadcastUint8Test(
857 armnn::IWorkloadFactory& workloadFactory,
858 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
859
Sadik Armagan2999a022019-04-09 14:20:12 +0100860LayerTestResult<int16_t, 4> AdditionInt16Test(
861 armnn::IWorkloadFactory& workloadFactory,
862 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
863
864LayerTestResult<int16_t, 4> AdditionBroadcastInt16Test(
865 armnn::IWorkloadFactory& workloadFactory,
866 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
867
868LayerTestResult<int16_t, 4> AdditionBroadcast1ElementInt16Test(
869 armnn::IWorkloadFactory& workloadFactory,
870 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
871
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000872LayerTestResult<uint8_t, 4> SubtractionUint8Test(
873 armnn::IWorkloadFactory& workloadFactory,
874 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
875
876LayerTestResult<uint8_t, 4> SubtractionBroadcast1ElementUint8Test(
877 armnn::IWorkloadFactory& workloadFactory,
878 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
879
880LayerTestResult<uint8_t, 4> SubtractionBroadcastUint8Test(
881 armnn::IWorkloadFactory& workloadFactory,
882 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
883
Sadik Armagan2999a022019-04-09 14:20:12 +0100884LayerTestResult<int16_t, 4> SubtractionInt16Test(
885 armnn::IWorkloadFactory& workloadFactory,
886 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
887
888LayerTestResult<int16_t, 4> SubtractionBroadcast1ElementInt16Test(
889 armnn::IWorkloadFactory& workloadFactory,
890 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
891
892LayerTestResult<int16_t, 4> SubtractionBroadcastInt16Test(
893 armnn::IWorkloadFactory& workloadFactory,
894 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
895
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000896LayerTestResult<uint8_t, 4> CompareActivationUint8Test(
897 armnn::IWorkloadFactory& workloadFactory,
898 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
899 armnn::IWorkloadFactory& refWorkloadFactory,
900 armnn::ActivationFunction f);
901
Teresa Charlin18515e22019-04-24 10:17:46 +0100902LayerTestResult<int16_t, 4> CompareActivationInt16Test(
903 armnn::IWorkloadFactory& workloadFactory,
904 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
905 armnn::IWorkloadFactory& refWorkloadFactory,
906 armnn::ActivationFunction f);
907
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000908LayerTestResult<uint8_t, 2> CompareSoftmaxUint8Test(
909 armnn::IWorkloadFactory& workloadFactory,
910 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
911 armnn::IWorkloadFactory& refWorkloadFactory,
912 float beta);
913
914LayerTestResult<uint8_t, 4> MultiplicationUint8Test(
915 armnn::IWorkloadFactory& workloadFactory,
916 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
917
918LayerTestResult<uint8_t, 4> MultiplicationBroadcast1ElementUint8Test(
919 armnn::IWorkloadFactory& workloadFactory,
920 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
921
922LayerTestResult<uint8_t, 4> MultiplicationBroadcast1DVectorUint8Test(
923 armnn::IWorkloadFactory& workloadFactory,
924 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
925
Sadik Armagan2999a022019-04-09 14:20:12 +0100926LayerTestResult<int16_t, 4> MultiplicationInt16Test(
927 armnn::IWorkloadFactory& workloadFactory,
928 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
929
930LayerTestResult<int16_t, 4> MultiplicationBroadcast1ElementInt16Test(
931 armnn::IWorkloadFactory& workloadFactory,
932 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
933
934LayerTestResult<int16_t, 4> MultiplicationBroadcast1DVectorInt16Test(
935 armnn::IWorkloadFactory& workloadFactory,
936 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
937
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000938LayerTestResult<uint8_t, 4> DivisionUint8Test(
939 armnn::IWorkloadFactory& workloadFactory,
940 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
941
942LayerTestResult<uint8_t, 4> DivisionBroadcast1ElementUint8Test(
943 armnn::IWorkloadFactory& workloadFactory,
944 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
945
946LayerTestResult<uint8_t, 4> DivisionBroadcast1DVectorUint8Test(
947 armnn::IWorkloadFactory& workloadFactory,
948 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
949
Sadik Armagan2999a022019-04-09 14:20:12 +0100950LayerTestResult<int16_t, 4> DivisionInt16Test(
951 armnn::IWorkloadFactory& workloadFactory,
952 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
953
954LayerTestResult<int16_t, 4> DivisionBroadcast1ElementInt16Test(
955 armnn::IWorkloadFactory& workloadFactory,
956 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
957
958LayerTestResult<int16_t, 4> DivisionBroadcast1DVectorInt16Test(
959 armnn::IWorkloadFactory& workloadFactory,
960 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
961
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000962LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test(
963 armnn::IWorkloadFactory& workloadFactory,
964 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
965 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000966 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000967
968LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test(
969 armnn::IWorkloadFactory& workloadFactory,
970 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
971 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000972 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000973
Mike Kelly2f80f6e2019-05-16 12:41:34 +0100974LayerTestResult<int16_t, 4> SimpleConvolution2d3x5QSymm16Test(
975 armnn::IWorkloadFactory& workloadFactory,
976 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
977 bool biasEnabled,
978 const armnn::DataLayout layout);
979
980LayerTestResult<int16_t, 4> SimpleConvolution2d3x3QSymm16Test(
981 armnn::IWorkloadFactory& workloadFactory,
982 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
983 bool biasEnabled,
984 const armnn::DataLayout layout);
985
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000986LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test(
987 armnn::IWorkloadFactory& workloadFactory,
988 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
989 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000990 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000991
992LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test(
993 armnn::IWorkloadFactory& workloadFactory,
994 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
995 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000996 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000997
Ruomei Yan88d44b82019-05-23 14:29:06 +0100998LayerTestResult<int16_t, 4> DepthwiseConvolution2dInt16Test(
999 armnn::IWorkloadFactory& workloadFactory,
1000 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1001 bool biasEnabled,
1002 const armnn::DataLayout layout);
1003
1004LayerTestResult<int16_t, 4> DepthwiseConvolution2dDepthMul1Int16Test(
1005 armnn::IWorkloadFactory& workloadFactory,
1006 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1007 bool biasEnabled,
1008 const armnn::DataLayout layout);
1009
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001010LayerTestResult<uint8_t, 4> ConstantLinearActivationUint8Test(
1011 armnn::IWorkloadFactory& workloadFactory,
1012 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1013
Teresa Charlin18515e22019-04-24 10:17:46 +01001014LayerTestResult<int16_t, 4> ConstantLinearActivationInt16Test(
1015 armnn::IWorkloadFactory& workloadFactory,
1016 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1017
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001018LayerTestResult<uint8_t, 4> ResizeBilinearNopUint8Test(
1019 armnn::IWorkloadFactory& workloadFactory,
1020 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1021
1022LayerTestResult<uint8_t, 4> SimpleResizeBilinearUint8Test(
1023 armnn::IWorkloadFactory& workloadFactory,
1024 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1025
1026LayerTestResult<uint8_t, 4> ResizeBilinearSqMinUint8Test(
1027 armnn::IWorkloadFactory& workloadFactory,
1028 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1029
1030LayerTestResult<uint8_t, 4> ResizeBilinearMinUint8Test(
1031 armnn::IWorkloadFactory& workloadFactory,
1032 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1033
1034LayerTestResult<uint8_t, 4> ResizeBilinearMagUint8Test(
1035 armnn::IWorkloadFactory& workloadFactory,
1036 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1037
1038LayerTestResult<uint8_t, 4> BatchNormUint8Test(
1039 armnn::IWorkloadFactory& workloadFactory,
1040 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1041
1042LayerTestResult<uint8_t, 4> BatchNormUint8NhwcTest(
1043 armnn::IWorkloadFactory& workloadFactory,
1044 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1045
Nina Drozd58ef2c62019-05-16 12:09:18 +01001046LayerTestResult<uint8_t, 4> ConstantUint8CustomQuantizationScaleAndOffsetTest(
1047 armnn::IWorkloadFactory& workloadFactory,
1048 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1049
1050LayerTestResult<int16_t, 4> ConstantInt16CustomQuantizationScaleAndOffsetTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001051 armnn::IWorkloadFactory& workloadFactory,
1052 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1053
1054LayerTestResult<uint8_t, 1> Concatenation1dUint8Test(
1055 armnn::IWorkloadFactory& workloadFactory,
1056 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1057
1058LayerTestResult<uint8_t, 2> Concatenation2dDim0Uint8Test(
1059 armnn::IWorkloadFactory& workloadFactory,
1060 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1061
1062LayerTestResult<uint8_t, 2> Concatenation2dDim1Uint8Test(
1063 armnn::IWorkloadFactory& workloadFactory,
1064 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1065
1066LayerTestResult<uint8_t, 2> Concatenation2dDim0DiffInputDimsUint8Test(
1067 armnn::IWorkloadFactory& workloadFactory,
1068 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1069
1070LayerTestResult<uint8_t, 2> Concatenation2dDim1DiffInputDimsUint8Test(
1071 armnn::IWorkloadFactory& workloadFactory,
1072 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1073
1074LayerTestResult<uint8_t, 3> Concatenation3dDim0Uint8Test(
1075 armnn::IWorkloadFactory& workloadFactory,
1076 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1077
1078LayerTestResult<uint8_t, 3> Concatenation3dDim1Uint8Test(
1079 armnn::IWorkloadFactory& workloadFactory,
1080 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1081
1082LayerTestResult<uint8_t, 3> Concatenation3dDim2Uint8Test(
1083 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +00001084 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1085 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001086
1087LayerTestResult<uint8_t, 3> Concatenation3dDim0DiffInputDimsUint8Test(
1088 armnn::IWorkloadFactory& workloadFactory,
1089 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1090
1091LayerTestResult<uint8_t, 3> Concatenation3dDim1DiffInputDimsUint8Test(
1092 armnn::IWorkloadFactory& workloadFactory,
1093 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1094
1095LayerTestResult<uint8_t, 3> Concatenation3dDim2DiffInputDimsUint8Test(
1096 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +00001097 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1098 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001099
kevmay012b4d88e2019-01-24 14:05:09 +00001100LayerTestResult<uint8_t, 4> EqualSimpleTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001101 armnn::IWorkloadFactory& workloadFactory,
1102 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1103
kevmay012b4d88e2019-01-24 14:05:09 +00001104LayerTestResult<uint8_t, 4> EqualBroadcast1ElementTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001105 armnn::IWorkloadFactory& workloadFactory,
1106 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1107
kevmay012b4d88e2019-01-24 14:05:09 +00001108LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001109 armnn::IWorkloadFactory& workloadFactory,
1110 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1111
1112LayerTestResult<uint8_t, 4> EqualUint8Test(
1113 armnn::IWorkloadFactory& workloadFactory,
1114 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1115
1116LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
1117 armnn::IWorkloadFactory& workloadFactory,
1118 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1119
1120LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorUint8Test(
1121 armnn::IWorkloadFactory& workloadFactory,
1122 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1123
kevmay012b4d88e2019-01-24 14:05:09 +00001124LayerTestResult<uint8_t, 4> GreaterSimpleTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001125 armnn::IWorkloadFactory& workloadFactory,
1126 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1127
kevmay012b4d88e2019-01-24 14:05:09 +00001128LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001129 armnn::IWorkloadFactory& workloadFactory,
1130 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1131
kevmay012b4d88e2019-01-24 14:05:09 +00001132LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001133 armnn::IWorkloadFactory& workloadFactory,
1134 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1135
1136LayerTestResult<uint8_t, 4> GreaterUint8Test(
1137 armnn::IWorkloadFactory& workloadFactory,
1138 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1139
1140LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
1141 armnn::IWorkloadFactory& workloadFactory,
1142 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1143
1144LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorUint8Test(
1145 armnn::IWorkloadFactory& workloadFactory,
1146 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1147
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001148LayerTestResult<float, 2> FullyConnectedLargeTest(
1149 armnn::IWorkloadFactory& workloadFactory,
1150 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1151 bool transposeWeights);
1152
1153LayerTestResult<float, 4> SimplePermuteFloat32Test(
1154 armnn::IWorkloadFactory& workloadFactory,
1155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1156
1157LayerTestResult<uint8_t, 4> SimplePermuteUint8Test(
1158 armnn::IWorkloadFactory& workloadFactory,
1159 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1160
1161LayerTestResult<uint8_t, 2> PadUint82dTest(
1162 armnn::IWorkloadFactory& workloadFactory,
1163 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1164
1165LayerTestResult<uint8_t, 3> PadUint83dTest(
1166 armnn::IWorkloadFactory& workloadFactory,
1167 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1168
1169LayerTestResult<uint8_t, 4> PadUint84dTest(
1170 armnn::IWorkloadFactory& workloadFactory,
1171 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1172
1173LayerTestResult<float, 2> PadFloat322dTest(
1174 armnn::IWorkloadFactory& workloadFactory,
1175 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1176
1177LayerTestResult<float, 3> PadFloat323dTest(
1178 armnn::IWorkloadFactory& workloadFactory,
1179 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1180
1181LayerTestResult<float, 4> PadFloat324dTest(
1182 armnn::IWorkloadFactory& workloadFactory,
1183 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1184
1185LayerTestResult<float, 4> PermuteFloat32ValueSet1Test(
1186 armnn::IWorkloadFactory& workloadFactory,
1187 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1188
1189LayerTestResult<float, 4> PermuteFloat32ValueSet2Test(
1190 armnn::IWorkloadFactory& workloadFactory,
1191 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1192
1193LayerTestResult<float, 4> PermuteFloat32ValueSet3Test(
1194 armnn::IWorkloadFactory& workloadFactory,
1195 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1196
1197LayerTestResult<float, 2> LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest(
1198 armnn::IWorkloadFactory& workloadFactory,
1199 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1200
1201LayerTestResult<float, 2> LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest(
1202 armnn::IWorkloadFactory& workloadFactory,
1203 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1204
1205LayerTestResult<float, 2> LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest(
1206 armnn::IWorkloadFactory& workloadFactory,
1207 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1208
Conor Kennedyb9971c92019-05-07 07:14:23 +01001209LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionTest(
1210 armnn::IWorkloadFactory& workloadFactory,
1211 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1212
1213LayerTestResult<int16_t, 2> LstmLayerInt16WithCifgWithPeepholeNoProjectionTest(
1214 armnn::IWorkloadFactory& workloadFactory,
1215 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1216
1217LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgWithPeepholeWithProjectionTest(
1218 armnn::IWorkloadFactory& workloadFactory,
1219 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1220
1221LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest(
1222 armnn::IWorkloadFactory& workloadFactory,
1223 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1224
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001225LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(
1226 armnn::IWorkloadFactory& workloadFactory,
1227 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1228
1229LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(
1230 armnn::IWorkloadFactory& workloadFactory,
1231 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1232
Éanna Ó Catháinde705582018-12-03 13:04:22 +00001233LayerTestResult<float, 4> MaximumSimpleTest(
1234 armnn::IWorkloadFactory& workloadFactory,
1235 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1236
1237LayerTestResult<float, 4> MaximumBroadcast1ElementTest(
1238 armnn::IWorkloadFactory& workloadFactory,
1239 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1240
1241LayerTestResult<float, 4> MaximumBroadcast1DVectorTest(
1242 armnn::IWorkloadFactory& workloadFactory,
1243 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1244
1245LayerTestResult<uint8_t , 4> MaximumUint8Test(
1246 armnn::IWorkloadFactory& workloadFactory,
1247 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1248
1249LayerTestResult<uint8_t, 4> MaximumBroadcast1ElementUint8Test(
1250 armnn::IWorkloadFactory& workloadFactory,
1251 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1252
1253LayerTestResult<uint8_t, 4> MaximumBroadcast1DVectorUint8Test(
1254 armnn::IWorkloadFactory& workloadFactory,
1255 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1256
Sadik Armagan2999a022019-04-09 14:20:12 +01001257LayerTestResult<int16_t , 4> MaximumInt16Test(
1258 armnn::IWorkloadFactory& workloadFactory,
1259 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1260
1261LayerTestResult<int16_t, 4> MaximumBroadcast1ElementInt16Test(
1262 armnn::IWorkloadFactory& workloadFactory,
1263 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1264
1265LayerTestResult<int16_t, 4> MaximumBroadcast1DVectorInt16Test(
1266 armnn::IWorkloadFactory& workloadFactory,
1267 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1268
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001269LayerTestResult<uint8_t, 1> MeanUint8SimpleTest(
1270 armnn::IWorkloadFactory& workloadFactory,
1271 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1272
1273LayerTestResult<uint8_t, 3> MeanUint8SimpleAxisTest(
1274 armnn::IWorkloadFactory& workloadFactory,
1275 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1276
1277LayerTestResult<uint8_t, 4> MeanUint8KeepDimsTest(
1278 armnn::IWorkloadFactory& workloadFactory,
1279 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1280
1281LayerTestResult<uint8_t, 4> MeanUint8MultipleDimsTest(
1282 armnn::IWorkloadFactory& workloadFactory,
1283 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1284
1285LayerTestResult<uint8_t, 1> MeanVtsUint8Test(
1286 armnn::IWorkloadFactory& workloadFactory,
1287 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1288
1289LayerTestResult<float, 1> MeanFloatSimpleTest(
1290 armnn::IWorkloadFactory& workloadFactory,
1291 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1292
1293LayerTestResult<float, 3> MeanFloatSimpleAxisTest(
1294 armnn::IWorkloadFactory& workloadFactory,
1295 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1296
1297LayerTestResult<float, 4> MeanFloatKeepDimsTest(
1298 armnn::IWorkloadFactory& workloadFactory,
1299 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1300
1301LayerTestResult<float, 4> MeanFloatMultipleDimsTest(
1302 armnn::IWorkloadFactory& workloadFactory,
1303 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1304
1305LayerTestResult<float, 1> MeanVtsFloat1Test(
1306 armnn::IWorkloadFactory& workloadFactory,
1307 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1308
1309LayerTestResult<float, 3> MeanVtsFloat2Test(
1310 armnn::IWorkloadFactory& workloadFactory,
1311 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1312
1313LayerTestResult<float, 3> MeanVtsFloat3Test(
1314 armnn::IWorkloadFactory& workloadFactory,
1315 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1316
Éanna Ó Catháin20e58802018-12-04 10:29:06 +00001317LayerTestResult<float, 4> MinimumBroadcast1ElementTest1(
1318 armnn::IWorkloadFactory& workloadFactory,
1319 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1320
1321LayerTestResult<float, 4> MinimumBroadcast1ElementTest2(
1322 armnn::IWorkloadFactory& workloadFactory,
1323 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1324
1325LayerTestResult<uint8_t, 4> MinimumBroadcast1DVectorUint8Test(
1326 armnn::IWorkloadFactory & workloadFactory,
1327 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1328
Sadik Armagan2999a022019-04-09 14:20:12 +01001329LayerTestResult<int16_t , 4> MinimumInt16Test(
1330 armnn::IWorkloadFactory& workloadFactory,
1331 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1332
1333LayerTestResult<int16_t, 4> MinimumBroadcast1ElementInt16Test(
1334 armnn::IWorkloadFactory& workloadFactory,
1335 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1336
1337LayerTestResult<int16_t, 4> MinimumBroadcast1DVectorInt16Test(
1338 armnn::IWorkloadFactory& workloadFactory,
1339 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1340
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001341LayerTestResult<float, 4> AdditionAfterMaxPoolTest(
1342 armnn::IWorkloadFactory& workloadFactory,
1343 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1344
1345LayerTestResult<float, 4> SpaceToBatchNdSimpleFloat32Test(
1346 armnn::IWorkloadFactory& workloadFactory,
1347 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1348
1349LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsFloat32Test(
1350 armnn::IWorkloadFactory& workloadFactory,
1351 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1352
1353LayerTestResult<float, 4> SpaceToBatchNdMultiBlockFloat32Test(
1354 armnn::IWorkloadFactory& workloadFactory,
1355 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1356
1357LayerTestResult<float, 4> SpaceToBatchNdPaddingFloat32Test(
1358 armnn::IWorkloadFactory& workloadFactory,
1359 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1360
1361LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleUint8Test(
1362 armnn::IWorkloadFactory& workloadFactory,
1363 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1364
1365LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsUint8Test(
1366 armnn::IWorkloadFactory& workloadFactory,
1367 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1368
1369LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockUint8Test(
1370 armnn::IWorkloadFactory& workloadFactory,
1371 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1372
1373LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingUint8Test(
1374 armnn::IWorkloadFactory& workloadFactory,
1375 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1376
1377LayerTestResult<float, 4> SpaceToBatchNdSimpleNHWCFloat32Test(
1378 armnn::IWorkloadFactory& workloadFactory,
1379 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1380
1381LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsNHWCFloat32Test(
1382 armnn::IWorkloadFactory& workloadFactory,
1383 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1384
1385LayerTestResult<float, 4> SpaceToBatchNdMultiBlockNHWCFloat32Test(
1386 armnn::IWorkloadFactory& workloadFactory,
1387 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1388
1389LayerTestResult<float, 4> SpaceToBatchNdPaddingNHWCFloat32Test(
1390 armnn::IWorkloadFactory& workloadFactory,
1391 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1392
1393LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleNHWCUint8Test(
1394 armnn::IWorkloadFactory& workloadFactory,
1395 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1396
1397LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsNHWCUint8Test(
1398 armnn::IWorkloadFactory& workloadFactory,
1399 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1400
1401LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockNHWCUint8Test(
1402 armnn::IWorkloadFactory& workloadFactory,
1403 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1404
1405LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingNHWCUint8Test(
1406 armnn::IWorkloadFactory& workloadFactory,
1407 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1408
nikraj01120522a2019-05-31 11:33:07 +01001409LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleUint16Test(
1410 armnn::IWorkloadFactory& workloadFactory,
1411 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1412
1413LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsUint16Test(
1414 armnn::IWorkloadFactory& workloadFactory,
1415 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1416
1417LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockUint16Test(
1418 armnn::IWorkloadFactory& workloadFactory,
1419 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1420
1421LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingUint16Test(
1422 armnn::IWorkloadFactory& workloadFactory,
1423 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1424
1425LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleNHWCUint16Test(
1426 armnn::IWorkloadFactory& workloadFactory,
1427 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1428
1429LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsNHWCUint16Test(
1430 armnn::IWorkloadFactory& workloadFactory,
1431 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1432
1433LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockNHWCUint16Test(
1434 armnn::IWorkloadFactory& workloadFactory,
1435 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1436
1437LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingNHWCUint16Test(
1438 armnn::IWorkloadFactory& workloadFactory,
1439 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1440
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001441LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test1(
1442 armnn::IWorkloadFactory& workloadFactory,
1443 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1444
1445LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test2(
1446 armnn::IWorkloadFactory& workloadFactory,
1447 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1448
1449LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test3(
1450 armnn::IWorkloadFactory& workloadFactory,
1451 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1452
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001453LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test4(
1454 armnn::IWorkloadFactory& workloadFactory,
1455 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1456
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001457LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test1(
1458 armnn::IWorkloadFactory &workloadFactory,
1459 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1460
Mike Kelly831faed2018-11-28 11:52:08 +00001461LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001462 armnn::IWorkloadFactory &workloadFactory,
1463 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001464
1465LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001466 armnn::IWorkloadFactory &workloadFactory,
1467 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001468
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001469LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest1(
1470 armnn::IWorkloadFactory &workloadFactory,
1471 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001472
Mike Kelly831faed2018-11-28 11:52:08 +00001473LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001474 armnn::IWorkloadFactory &workloadFactory,
1475 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001476
1477LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001478 armnn::IWorkloadFactory &workloadFactory,
1479 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001480
1481LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest1(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001482 armnn::IWorkloadFactory &workloadFactory,
1483 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001484
1485LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001486 armnn::IWorkloadFactory &workloadFactory,
1487 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001488
1489LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001490 armnn::IWorkloadFactory &workloadFactory,
1491 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1492
1493LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest4(
1494 armnn::IWorkloadFactory &workloadFactory,
1495 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001496
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001497LayerTestResult<float, 4> StridedSlice4DFloat32Test(
1498 armnn::IWorkloadFactory& workloadFactory,
1499 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001500
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001501LayerTestResult<float, 4> StridedSlice4DReverseFloat32Test(
1502 armnn::IWorkloadFactory& workloadFactory,
1503 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1504
1505LayerTestResult<float, 4> StridedSliceSimpleStrideFloat32Test(
1506 armnn::IWorkloadFactory& workloadFactory,
1507 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1508
1509LayerTestResult<float, 4> StridedSliceSimpleRangeMaskFloat32Test(
1510 armnn::IWorkloadFactory& workloadFactory,
1511 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1512
1513LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test(
1514 armnn::IWorkloadFactory& workloadFactory,
1515 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1516
1517LayerTestResult<float, 3> StridedSlice3DFloat32Test(
1518 armnn::IWorkloadFactory& workloadFactory,
1519 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1520
1521LayerTestResult<float, 3> StridedSlice3DReverseFloat32Test(
1522 armnn::IWorkloadFactory& workloadFactory,
1523 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1524
1525LayerTestResult<float, 2> StridedSlice2DFloat32Test(
1526 armnn::IWorkloadFactory& workloadFactory,
1527 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1528
1529LayerTestResult<float, 2> StridedSlice2DReverseFloat32Test(
1530 armnn::IWorkloadFactory& workloadFactory,
1531 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1532
1533LayerTestResult<uint8_t, 4> StridedSlice4DUint8Test(
1534 armnn::IWorkloadFactory& workloadFactory,
1535 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1536
1537LayerTestResult<uint8_t, 4> StridedSlice4DReverseUint8Test(
1538 armnn::IWorkloadFactory& workloadFactory,
1539 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1540
1541LayerTestResult<uint8_t, 4> StridedSliceSimpleStrideUint8Test(
1542 armnn::IWorkloadFactory& workloadFactory,
1543 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1544
1545LayerTestResult<uint8_t, 4> StridedSliceSimpleRangeMaskUint8Test(
1546 armnn::IWorkloadFactory& workloadFactory,
1547 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1548
1549LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test(
1550 armnn::IWorkloadFactory& workloadFactory,
1551 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1552
1553LayerTestResult<uint8_t, 3> StridedSlice3DUint8Test(
1554 armnn::IWorkloadFactory& workloadFactory,
1555 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1556
1557LayerTestResult<uint8_t, 3> StridedSlice3DReverseUint8Test(
1558 armnn::IWorkloadFactory& workloadFactory,
1559 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1560
1561LayerTestResult<uint8_t, 2> StridedSlice2DUint8Test(
1562 armnn::IWorkloadFactory& workloadFactory,
1563 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1564
1565LayerTestResult<uint8_t, 2> StridedSlice2DReverseUint8Test(
1566 armnn::IWorkloadFactory& workloadFactory,
1567 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001568
Matteo Martincigh42666a12019-05-29 08:53:41 +01001569LayerTestResult<int16_t, 4> StridedSlice4DInt16Test(
1570 armnn::IWorkloadFactory& workloadFactory,
1571 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1572
1573LayerTestResult<int16_t, 4> StridedSlice4DReverseInt16Test(
1574 armnn::IWorkloadFactory& workloadFactory,
1575 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1576
1577LayerTestResult<int16_t, 4> StridedSliceSimpleStrideInt16Test(
1578 armnn::IWorkloadFactory& workloadFactory,
1579 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1580
1581LayerTestResult<int16_t, 4> StridedSliceSimpleRangeMaskInt16Test(
1582 armnn::IWorkloadFactory& workloadFactory,
1583 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1584
1585LayerTestResult<int16_t, 2> StridedSliceShrinkAxisMaskInt16Test(
1586 armnn::IWorkloadFactory& workloadFactory,
1587 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1588
1589LayerTestResult<int16_t, 3> StridedSlice3DInt16Test(
1590 armnn::IWorkloadFactory& workloadFactory,
1591 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1592
1593LayerTestResult<int16_t, 3> StridedSlice3DReverseInt16Test(
1594 armnn::IWorkloadFactory& workloadFactory,
1595 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1596
1597LayerTestResult<int16_t, 2> StridedSlice2DInt16Test(
1598 armnn::IWorkloadFactory& workloadFactory,
1599 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1600
1601LayerTestResult<int16_t, 2> StridedSlice2DReverseInt16Test(
1602 armnn::IWorkloadFactory& workloadFactory,
1603 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1604
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001605LayerTestResult<float, 4> Debug4DFloat32Test(
1606 armnn::IWorkloadFactory& workloadFactory,
1607 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1608
1609LayerTestResult<float, 3> Debug3DFloat32Test(
1610 armnn::IWorkloadFactory& workloadFactory,
1611 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1612
1613LayerTestResult<float, 2> Debug2DFloat32Test(
1614 armnn::IWorkloadFactory& workloadFactory,
1615 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1616
1617LayerTestResult<float, 1> Debug1DFloat32Test(
1618 armnn::IWorkloadFactory& workloadFactory,
1619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1620
1621LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1622 armnn::IWorkloadFactory& workloadFactory,
1623 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1624
1625LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1626 armnn::IWorkloadFactory& workloadFactory,
1627 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1628
1629LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1630 armnn::IWorkloadFactory& workloadFactory,
1631 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1632
1633LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1634 armnn::IWorkloadFactory& workloadFactory,
1635 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Matteo Martincigh49124022019-01-11 13:25:59 +00001636
1637LayerTestResult<uint8_t, 4> PreCompiledConvolution2dTest(
1638 armnn::IWorkloadFactory& workloadFactory,
1639 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1640
1641LayerTestResult<uint8_t, 4> PreCompiledConvolution2dStride2x2Test(
1642 armnn::IWorkloadFactory& workloadFactory,
1643 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1644
1645LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dTest(
1646 armnn::IWorkloadFactory & workloadFactory,
1647 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1648
1649LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dStride2x2Test(
1650 armnn::IWorkloadFactory & workloadFactory,
1651 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1652
1653LayerTestResult<uint8_t, 4> PreCompiledMaxPooling2dTest(
1654 armnn::IWorkloadFactory& workloadFactory,
1655 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1656
1657LayerTestResult<float, 4> Debug4DFloat32Test(
1658 armnn::IWorkloadFactory& workloadFactory,
1659 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1660
1661LayerTestResult<float, 3> Debug3DFloat32Test(
1662 armnn::IWorkloadFactory& workloadFactory,
1663 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1664
1665LayerTestResult<float, 2> Debug2DFloat32Test(
1666 armnn::IWorkloadFactory& workloadFactory,
1667 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1668
1669LayerTestResult<float, 1> Debug1DFloat32Test(
1670 armnn::IWorkloadFactory& workloadFactory,
1671 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1672
1673LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1674 armnn::IWorkloadFactory& workloadFactory,
1675 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1676
1677LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1678 armnn::IWorkloadFactory& workloadFactory,
1679 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1680
1681LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1682 armnn::IWorkloadFactory& workloadFactory,
1683 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1684
1685LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1686 armnn::IWorkloadFactory& workloadFactory,
1687 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra014951d842019-01-18 16:53:53 +00001688
1689LayerTestResult<float, 1> Gather1DParamsFloatTest(
1690 armnn::IWorkloadFactory& workloadFactory,
1691 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1692
1693LayerTestResult<uint8_t, 1> Gather1DParamsUint8Test(
1694 armnn::IWorkloadFactory& workloadFactory,
1695 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1696
1697LayerTestResult<float, 2> GatherMultiDimParamsFloatTest(
1698 armnn::IWorkloadFactory& workloadFactory,
1699 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1700
1701LayerTestResult<uint8_t, 2> GatherMultiDimParamsUint8Test(
1702 armnn::IWorkloadFactory& workloadFactory,
1703 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1704
1705LayerTestResult<float, 4> GatherMultiDimParamsMultiDimIndicesFloatTest(
1706 armnn::IWorkloadFactory& workloadFactory,
1707 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1708
1709LayerTestResult<uint8_t, 4> GatherMultiDimParamsMultiDimIndicesUint8Test(
1710 armnn::IWorkloadFactory& workloadFactory,
1711 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong8a54ac02019-03-29 15:25:04 +00001712
Nattapat Chaimanowongafa4e3a2019-04-02 11:41:45 +01001713LayerTestResult<float, 4> DequantizeSimpleUint8Test(
1714 armnn::IWorkloadFactory& workloadFactory,
1715 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1716
1717LayerTestResult<float, 4> DequantizeOffsetUint8Test(
1718 armnn::IWorkloadFactory& workloadFactory,
1719 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1720
1721LayerTestResult<float, 4> DequantizeSimpleInt16Test(
Nattapat Chaimanowong8a54ac02019-03-29 15:25:04 +00001722 armnn::IWorkloadFactory& workloadFactory,
1723 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowonga0beb3b2019-04-01 17:04:53 +01001724
1725LayerTestResult<uint8_t, 4> QuantizeSimpleUint8Test(
1726 armnn::IWorkloadFactory& workloadFactory,
1727 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1728
1729LayerTestResult<uint8_t, 4> QuantizeClampUint8Test(
1730 armnn::IWorkloadFactory& workloadFactory,
1731 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1732
1733LayerTestResult<int16_t, 4> QuantizeClampInt16Test(
1734 armnn::IWorkloadFactory& workloadFactory,
1735 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Francis Murtagh46c09d02019-05-28 08:15:28 +01001736
1737template<typename T, typename B>
1738LayerTestResult<T, 2> SimpleFullyConnectedTestImpl(
1739 armnn::IWorkloadFactory& workloadFactory,
1740 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1741 armnn::TensorInfo inputTensorInfo,
1742 armnn::TensorInfo outputTensorInfo,
1743 armnn::TensorInfo weightsDesc,
1744 armnn::TensorInfo biasesDesc,
1745 boost::multi_array<T, 2>& weights,
1746 boost::multi_array<B, 1>& bias,
1747 boost::multi_array<T, 4>& input,
1748 bool biasEnabled,
1749 bool transposeWeights)
1750{
1751 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1752 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1753
1754 armnn::FullyConnectedQueueDescriptor data;
1755 armnn::WorkloadInfo info;
1756 armnn::ScopedCpuTensorHandle weightsTensor(weightsDesc);
1757 armnn::ScopedCpuTensorHandle biasTensor(biasesDesc);
1758
1759 AllocateAndCopyDataToITensorHandle(&weightsTensor, &weights[0][0]);
1760 AllocateAndCopyDataToITensorHandle(&biasTensor, &bias[0]);
1761
1762 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1763 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1764 data.m_Weight = &weightsTensor;
1765 data.m_Bias = &biasTensor;
1766 data.m_Parameters.m_BiasEnabled = biasEnabled;
1767 data.m_Parameters.m_TransposeWeightMatrix = transposeWeights;
1768
1769 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFullyConnected(data, info);
1770 LayerTestResult<T, 2> result(outputTensorInfo);
1771
1772 inputHandle->Allocate();
1773 outputHandle->Allocate();
1774 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
1775
1776 ExecuteWorkload(*workload, memoryManager);
1777
1778 CopyDataFromITensorHandle(&result.output[0][0], outputHandle.get());
1779
1780 return result;
1781}
1782
1783template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1784std::vector<T> ConvertToDataType(const std::vector<float>& input,
1785 const armnn::TensorInfo& inputTensorInfo)
1786{
1787 std::vector<T> output(input.size());
1788 auto outputTensorInfo = inputTensorInfo;
1789 outputTensorInfo.SetDataType(ArmnnType);
1790
1791 std::unique_ptr<armnn::Encoder<float>> pOutputEncoder = armnn::MakeEncoder<float>(outputTensorInfo, output.data());
1792 armnn::Encoder<float>& rOutputEncoder = *pOutputEncoder;
1793
1794 for (auto it = input.begin(); it != input.end(); ++it)
1795 {
1796 rOutputEncoder.Set(*it);
1797 ++rOutputEncoder;
1798 }
1799 return output;
1800}
1801
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01001802template<typename T>
1803LayerTestResult<T, 4> SimpleReshapeTestImpl(
1804 armnn::IWorkloadFactory& workloadFactory,
1805 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1806 armnn::TensorInfo inputTensorInfo,
1807 armnn::TensorInfo outputTensorInfo,
1808 const std::vector<T>& inputData,
1809 const std::vector<T>& outputExpectedData)
1810{
1811 auto input = MakeTensor<T, 4>(inputTensorInfo, inputData);
1812
1813 LayerTestResult<T, 4> ret(outputTensorInfo);
1814 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, outputExpectedData);
1815
1816 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1817 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1818
1819 armnn::ReshapeQueueDescriptor data;
1820 armnn::WorkloadInfo info;
1821 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1822 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1823
1824 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateReshape(data, info);
1825
1826 inputHandle->Allocate();
1827 outputHandle->Allocate();
1828
1829 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
1830
1831 workload->Execute();
1832
1833 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
1834
1835 return ret;
1836}
1837
Francis Murtagh46c09d02019-05-28 08:15:28 +01001838template<armnn::DataType ArmnnType, typename T>
1839LayerTestResult<T, 2> FullyConnectedTest(
1840 armnn::IWorkloadFactory& workloadFactory,
1841 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1842 bool biasEnabled)
1843{
1844 constexpr static unsigned int inputWidth = 3u;
1845 constexpr static unsigned int inputHeight = 2u;
1846 constexpr static unsigned int inputChannels = 1u;
1847
1848 constexpr static unsigned int inputSize = inputWidth * inputHeight * inputChannels;
1849
1850 constexpr static unsigned int outputChannels = 2u;
1851
1852 armnn::TensorInfo inputTensorInfo({ 1, inputChannels, inputHeight, inputWidth }, ArmnnType);
1853 inputTensorInfo.SetQuantizationScale(0.1f);
1854 inputTensorInfo.SetQuantizationOffset(63);
1855
1856 armnn::TensorInfo outputTensorInfo({ 1, outputChannels }, ArmnnType);
1857 outputTensorInfo.SetQuantizationScale(5.f);
1858 outputTensorInfo.SetQuantizationOffset(biasEnabled ? -50 : 10);
1859
1860 armnn::TensorInfo weightsDesc({ outputChannels, inputSize }, ArmnnType);
1861 weightsDesc.SetQuantizationScale(0.2f);
1862 weightsDesc.SetQuantizationOffset(93);
1863
1864 armnn::TensorInfo biasesDesc({ outputChannels }, GetBiasTypeFromWeightsType(weightsDesc.GetDataType()).value());
1865 biasesDesc.SetQuantizationScale(inputTensorInfo.GetQuantizationScale() * weightsDesc.GetQuantizationScale());
1866 biasesDesc.SetQuantizationOffset(0);
1867
1868 LayerTestResult<T, 2> result(outputTensorInfo);
1869
1870 auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
1871 {
1872 -1.2f, 6.1f, -3.5f,
1873 18.8f, -5.5f, 2.9f
1874 },
1875 inputTensorInfo));
1876
1877 auto weights = MakeTensor<T, 2>(weightsDesc, ConvertToDataType<ArmnnType>(
1878 {
1879 -8.4f, 20.0f, -10.4f, -8, 16.4f, -11.8f,
1880 23.4f, 10.4f, -14.0f, -3.8f, -11.8f, 11.4f
1881 },
1882 weightsDesc));
1883
1884 auto bias = MakeTensor<int32_t, 1>(biasesDesc, std::vector<int32_t>{9250, 67500});
1885
1886 result = SimpleFullyConnectedTestImpl<T>(
1887 workloadFactory,
1888 memoryManager,
1889 inputTensorInfo, outputTensorInfo,
1890 weightsDesc, biasesDesc,
1891 weights, bias, input,
1892 biasEnabled, true
1893 );
1894
1895 if (biasEnabled)
1896 {
1897 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
1898 ConvertToDataType<ArmnnType>({80.f, 1460.f}, outputTensorInfo));
1899 }
1900 else
1901 {
1902 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
1903 ConvertToDataType<ArmnnType>({-107.04f, 110.f}, outputTensorInfo));
1904 }
1905
1906 return result;
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01001907}
1908
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01001909template<armnn::DataType ArmnnType, typename T>
1910LayerTestResult<T, 4> SimpleReshapeTest(
1911 armnn::IWorkloadFactory& workloadFactory,
1912 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
1913{
1914 armnn::TensorInfo inputTensorInfo;
1915 armnn::TensorInfo outputTensorInfo;
1916
1917 unsigned int inputShape[] = { 2, 2, 3, 3 };
1918 unsigned int outputShape[] = { 2, 2, 9, 1 };
1919
1920 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
1921 inputTensorInfo.SetQuantizationScale(1.0f);
1922 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
1923 outputTensorInfo.SetQuantizationScale(1.0f);
1924
1925 auto input = ConvertToDataType<ArmnnType>(
1926 {
1927 0.0f, 1.0f, 2.0f,
1928 3.0f, 4.0f, 5.0f,
1929 6.0f, 7.0f, 8.0f,
1930
1931 9.0f, 10.0f, 11.0f,
1932 12.0f, 13.0f, 14.0f,
1933 15.0f, 16.0f, 17.0f,
1934
1935 18.0f, 19.0f, 20.0f,
1936 21.0f, 22.0f, 23.0f,
1937 24.0f, 25.0f, 26.0f,
1938
1939 27.0f, 28.0f, 29.0f,
1940 30.0f, 31.0f, 32.0f,
1941 33.0f, 34.0f, 35.0f,
1942 },
1943 inputTensorInfo);
1944
1945 auto outputExpected = ConvertToDataType<ArmnnType>(
1946 {
1947 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f,
1948
1949 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f,
1950
1951 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f,
1952
1953 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f,
1954 },
1955 outputTensorInfo);
1956
1957 return SimpleReshapeTestImpl<T>(
1958 workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected);
Matteo Martincigh42666a12019-05-29 08:53:41 +01001959}
James Conroy83735b12019-05-30 16:36:59 +01001960
1961template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1962LayerTestResult<T, 4> SimpleFloorTest(
1963 armnn::IWorkloadFactory& workloadFactory,
1964 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
1965{
James Conroyb40d7102019-06-04 12:32:09 +01001966 armnn::TensorInfo inputTensorInfo({1, 3, 2, 3}, ArmnnType);
1967 inputTensorInfo.SetQuantizationScale(0.1f);
1968
1969 armnn::TensorInfo outputTensorInfo(inputTensorInfo);
1970 outputTensorInfo.SetQuantizationScale(0.1f);
James Conroy83735b12019-05-30 16:36:59 +01001971
1972 auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
1973 { -37.5f, -15.2f, -8.76f, -2.0f, -1.5f, -1.3f, -0.5f, -0.4f, 0.0f,
1974 1.0f, 0.4f, 0.5f, 1.3f, 1.5f, 2.0f, 8.76f, 15.2f, 37.5f },
1975 inputTensorInfo));
1976
1977 LayerTestResult<T, 4> ret(outputTensorInfo);
1978 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, ConvertToDataType<ArmnnType>(
1979 { -38.0f, -16.0f, -9.0f, -2.0f, -2.0f, -2.0f, -1.0f, -1.0f, 0.0f,
1980 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 2.0f, 8.0f, 15.0f, 37.0f },
1981 outputTensorInfo));
1982
1983 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1984 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1985
1986 armnn::FloorQueueDescriptor data;
1987 armnn::WorkloadInfo info;
1988 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1989 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1990
1991 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFloor(data, info);
1992
1993 inputHandle->Allocate();
1994 outputHandle->Allocate();
1995
1996 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
1997
1998 workload->Execute();
1999
2000 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
2001
2002 return ret;
2003}