blob: b2c43e12c3b40dac009827be15212de347b92fe1 [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00006#include <backendsCommon/test/EndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +01007
Jan Eilersbca73e12020-03-11 12:52:46 +00008#include <backendsCommon/test/ActivationEndToEndTestImpl.hpp>
James Conroy68a4dbc2019-11-13 15:35:59 +00009#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010010#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010011#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010012#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010013#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Derek Lamberti6a5e5e82019-12-05 14:41:20 +000014#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060015#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010016#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Nikhil Raj1c8adac2019-07-22 11:27:29 +010017#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
Francis Murtaghb3fc2522019-08-09 13:20:50 +010018#include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010019#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010020#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010021#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010022
23#include <boost/test/unit_test.hpp>
24
25BOOST_AUTO_TEST_SUITE(NeonEndToEnd)
26
narpra01b9546cf2018-11-20 15:21:28 +000027std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuAcc};
28
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010029// Abs
30BOOST_AUTO_TEST_CASE(NeonAbsEndToEndTestFloat32)
31{
josh minor4a3c6102020-01-06 16:40:46 -060032 std::vector<float> expectedOutput =
33 {
34 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
35 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
36 };
37
38 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
39 UnaryOperation::Abs,
40 expectedOutput);
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010041}
42
43// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010044BOOST_AUTO_TEST_CASE(ConstantUsage_Neon_Float32)
45{
narpra01b9546cf2018-11-20 15:21:28 +000046 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010047}
48
Matteo Martincighdb16dd32019-08-27 16:41:11 +010049#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010050
51// This test unit needs the reference backend, it's not available if the reference backend is not built
52
Aron Virginas-Tar70104002018-10-24 15:33:28 +010053BOOST_AUTO_TEST_CASE(FallbackToCpuRef)
54{
55 using namespace armnn;
56
57 // Create runtime in which test will run and allow fallback to CpuRef.
58 IRuntime::CreationOptions options;
59 IRuntimePtr runtime(IRuntime::Create(options));
60
61 // Builds up the structure of the network.
62 INetworkPtr net(INetwork::Create());
63
64 IConnectableLayer* input = net->AddInputLayer(0);
65
66 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
67 NormalizationDescriptor descriptor;
68 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
69
70 IConnectableLayer* output = net->AddOutputLayer(0);
71
72 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
73 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
74
75 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
76 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
77
78 // optimize the network
79 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
80 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
81
82 // Load it into the runtime. It should pass.
83 NetworkId netId;
84 BOOST_TEST(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
85}
86
Matteo Martincighe67edb22019-08-14 14:05:46 +010087#endif
88
kevmay01eed85922019-01-28 08:37:25 +000089BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndTest)
90{
91 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
92 0, 0, 0, 0, 0, 0, 0, 0 });
93
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010094 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
95 ComparisonOperation::Greater,
96 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +000097}
98
99BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndUint8Test)
100{
101 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
102 0, 0, 0, 0, 0, 0, 0, 0 });
103
Derek Lambertif90c56d2020-01-10 17:14:08 +0000104 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100105 ComparisonOperation::Greater,
106 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000107}
108
109BOOST_AUTO_TEST_CASE(NeonGreaterBroadcastEndToEndTest)
110{
111 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
112 1, 1, 1, 1, 1, 1 });
113
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100114 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
115 ComparisonOperation::Greater,
116 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000117}
118
119BOOST_AUTO_TEST_CASE(NeonGreaterBroadcastEndToEndUint8Test)
120{
121 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
122 1, 1, 1, 1, 1, 1 });
123
Derek Lambertif90c56d2020-01-10 17:14:08 +0000124 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100125 ComparisonOperation::Greater,
126 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000127}
128
Jim Flynne242f2d2019-05-22 14:24:13 +0100129BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000130{
Jim Flynne242f2d2019-05-22 14:24:13 +0100131 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000132}
133
Jim Flynne242f2d2019-05-22 14:24:13 +0100134BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000135{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000136 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000137}
138
Jim Flynne242f2d2019-05-22 14:24:13 +0100139BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000140{
Jim Flynne242f2d2019-05-22 14:24:13 +0100141 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000142}
143
Jim Flynne242f2d2019-05-22 14:24:13 +0100144BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000145{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000146 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000147}
148
Jim Flynne242f2d2019-05-22 14:24:13 +0100149BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000150{
Jim Flynne242f2d2019-05-22 14:24:13 +0100151 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000152}
153
Jim Flynne242f2d2019-05-22 14:24:13 +0100154BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000155{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000156 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000157}
158
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100159// DepthToSpace
160BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
161{
162 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
163}
164
165BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
166{
167 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
168}
169
170BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
171{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000172 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100173}
174
175BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
176{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000177 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100178}
179
180BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
181{
182 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
183}
184
185BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
186{
187 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
188}
189
190BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
191{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000192 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100193}
194
195BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
196{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000197 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100198}
199
200// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100201BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
202{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000203 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100204}
205
206BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
207{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000208 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100209}
210
Jan Eilersbca73e12020-03-11 12:52:46 +0000211BOOST_AUTO_TEST_CASE(NeonEluEndToEndTestFloat32)
212{
213 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
214}
215
216BOOST_AUTO_TEST_CASE(NeonEluEndToEndTestFloat16)
217{
218 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
219}
220
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100221BOOST_AUTO_TEST_CASE(NeonPreluEndToEndFloat32Test)
222{
223 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
224}
225
226BOOST_AUTO_TEST_CASE(NeonPreluEndToEndTestUint8Test)
227{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000228 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100229}
230
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100231BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNhwcEndToEndTest1)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100232{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100233 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100234}
235
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100236BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNchwEndToEndTest1)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100237{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100238 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100239}
240
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100241BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNhwcEndToEndTest2)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100242{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100243 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100244}
245
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100246BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNchwEndToEndTest2)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100247{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100248 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100249}
250
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100251BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100252{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100253 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100254}
255
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100256BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100257{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000258 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100259}
260
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100261BOOST_AUTO_TEST_CASE(NeonSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100262{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100263 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100264}
265
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100266BOOST_AUTO_TEST_CASE(NeonSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100267{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100268 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100269}
270
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100271BOOST_AUTO_TEST_CASE(NeonSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100272{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000273 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100274}
275
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100276BOOST_AUTO_TEST_CASE(NeonSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100277{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000278 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100279}
280
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100281BOOST_AUTO_TEST_CASE(NeonSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100282{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100283 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100284}
285
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100286BOOST_AUTO_TEST_CASE(NeonSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100287{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100288 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
289}
290
291BOOST_AUTO_TEST_CASE(NeonSplitter3dDim2EndToEndTest)
292{
293 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
294}
295
296BOOST_AUTO_TEST_CASE(NeonSplitter3dDim0EndToEndUint8Test)
297{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000298 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100299}
300
301BOOST_AUTO_TEST_CASE(NeonSplitter3dDim1EndToEndUint8Test)
302{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000303 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100304}
305
306BOOST_AUTO_TEST_CASE(NeonSplitter3dDim2EndToEndUint8Test)
307{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000308 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100309}
310
311BOOST_AUTO_TEST_CASE(NeonSplitter4dDim0EndToEndTest)
312{
313 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
314}
315
316BOOST_AUTO_TEST_CASE(NeonSplitter4dDim1EndToEndTest)
317{
318 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
319}
320
321BOOST_AUTO_TEST_CASE(NeonSplitter4dDim2EndToEndTest)
322{
323 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
324}
325
326BOOST_AUTO_TEST_CASE(NeonSplitter4dDim3EndToEndTest)
327{
328 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
329}
330
331BOOST_AUTO_TEST_CASE(NeonSplitter4dDim0EndToEndUint8Test)
332{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000333 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100334}
335
336BOOST_AUTO_TEST_CASE(NeonSplitter4dDim1EndToEndUint8Test)
337{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000338 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100339}
340
341BOOST_AUTO_TEST_CASE(NeonSplitter4dDim2EndToEndUint8Test)
342{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000343 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100344}
345
346BOOST_AUTO_TEST_CASE(NeonSplitter4dDim3EndToEndUint8Test)
347{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000348 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100349}
350
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100351BOOST_AUTO_TEST_CASE(NeonQuantizedLstmEndToEndTest)
352{
353 QuantizedLstmEndToEnd(defaultBackends);
354}
355
Sadik Armagan581742d2019-08-12 14:11:37 +0100356BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndFloatNchwTest)
357{
358 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
359 defaultBackends, armnn::DataLayout::NCHW);
360}
361
362BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndUint8NchwTest)
363{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000364 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan581742d2019-08-12 14:11:37 +0100365 defaultBackends, armnn::DataLayout::NCHW);
366}
367
368BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndFloatNhwcTest)
369{
370 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
371 defaultBackends, armnn::DataLayout::NHWC);
372}
373
374BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndUint8NhwcTest)
375{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000376 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan581742d2019-08-12 14:11:37 +0100377 defaultBackends, armnn::DataLayout::NHWC);
378}
379
David Monahan3fb7e102019-08-20 11:25:29 +0100380BOOST_AUTO_TEST_CASE(NeonImportNonAlignedInputPointerTest)
381{
382 ImportNonAlignedInputPointerTest(defaultBackends);
383}
384
Ferran Balaguer83239f92019-09-19 11:49:25 +0100385BOOST_AUTO_TEST_CASE(NeonExportNonAlignedOutputPointerTest)
David Monahan3fb7e102019-08-20 11:25:29 +0100386{
Ferran Balaguer83239f92019-09-19 11:49:25 +0100387 ExportNonAlignedOutputPointerTest(defaultBackends);
388}
389
James Conroyffab16f2019-11-07 14:37:09 +0000390BOOST_AUTO_TEST_CASE(NeonImportAlignedPointerTest, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100391{
392 ImportAlignedPointerTest(defaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100393}
394
James Conroyffab16f2019-11-07 14:37:09 +0000395BOOST_AUTO_TEST_CASE(NeonImportOnlyWorkload, * boost::unit_test::disabled())
David Monahan3fb7e102019-08-20 11:25:29 +0100396{
Ferran Balaguer83239f92019-09-19 11:49:25 +0100397 ImportOnlyWorkload(defaultBackends);
398}
David Monahan3fb7e102019-08-20 11:25:29 +0100399
James Conroyffab16f2019-11-07 14:37:09 +0000400BOOST_AUTO_TEST_CASE(NeonExportOnlyWorkload, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100401{
402 ExportOnlyWorkload(defaultBackends);
403}
David Monahan3fb7e102019-08-20 11:25:29 +0100404
James Conroyffab16f2019-11-07 14:37:09 +0000405BOOST_AUTO_TEST_CASE(NeonImportAndExportWorkload, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100406{
407 ImportAndExportWorkload(defaultBackends);
408}
David Monahan3fb7e102019-08-20 11:25:29 +0100409
James Conroyffab16f2019-11-07 14:37:09 +0000410BOOST_AUTO_TEST_CASE(NeonExportOutputWithSeveralOutputSlotConnectionsTest, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100411{
412 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100413}
414
Sadik Armagan062e0e92019-10-14 10:31:43 +0100415// InstanceNormalization
416BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest1)
417{
418 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
419}
420
421BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest2)
422{
423 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
424}
425
James Conroy68a4dbc2019-11-13 15:35:59 +0000426// ArgMinMax
427BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTest)
428{
429 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
430}
431
432BOOST_AUTO_TEST_CASE(NeonArgMinSimpleTest)
433{
434 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
435}
436
437BOOST_AUTO_TEST_CASE(NeonArgMaxAxis0Test)
438{
439 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
440}
441
442BOOST_AUTO_TEST_CASE(NeonArgMinAxis0Test)
443{
444 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
445}
446
447BOOST_AUTO_TEST_CASE(NeonArgMaxAxis1Test)
448{
449 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
450}
451
452BOOST_AUTO_TEST_CASE(NeonArgMinAxis1Test)
453{
454 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
455}
456
457BOOST_AUTO_TEST_CASE(NeonArgMaxAxis2Test)
458{
459 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
460}
461
462BOOST_AUTO_TEST_CASE(NeonArgMinAxis2Test)
463{
464 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
465}
466
467BOOST_AUTO_TEST_CASE(NeonArgMaxAxis3Test)
468{
469 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
470}
471
472BOOST_AUTO_TEST_CASE(NeonArgMinAxis3Test)
473{
474 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
475}
476
Francis Murtagh52ec3462019-11-19 12:24:19 +0000477BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTestQuantisedAsymm8)
478{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000479 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000480}
481
482BOOST_AUTO_TEST_CASE(NeonArgMinSimpleTestQuantisedAsymm8)
483{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000484 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000485}
486
487BOOST_AUTO_TEST_CASE(NeonArgMaxAxis0TestQuantisedAsymm8)
488{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000489 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000490}
491
492BOOST_AUTO_TEST_CASE(NeonArgMinAxis0TestQuantisedAsymm8)
493{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000494 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000495}
496
497BOOST_AUTO_TEST_CASE(NeonArgMaxAxis1TestQuantisedAsymm8)
498{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000499 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000500}
501
502BOOST_AUTO_TEST_CASE(NeonArgMinAxis1TestQuantisedAsymm8)
503{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000504 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000505}
506
507BOOST_AUTO_TEST_CASE(NeonArgMaxAxis2TestQuantisedAsymm8)
508{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000509 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000510}
511
512BOOST_AUTO_TEST_CASE(NeonArgMinAxis2TestQuantisedAsymm8)
513{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000514 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000515}
516
517BOOST_AUTO_TEST_CASE(NeonArgMaxAxis3TestQuantisedAsymm8)
518{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000519 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000520}
521
522BOOST_AUTO_TEST_CASE(NeonArgMinAxis3TestQuantisedAsymm8)
523{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000524 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000525}
526
David Monahan0a99a142020-03-13 07:52:54 +0000527BOOST_AUTO_TEST_CASE(NeonStridedSliceInvalidSliceEndToEndTest)
528{
529 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
530}
531
James Conroyd9fb6e22020-02-21 16:52:44 +0000532BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessRegularNmsTest, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000533{
534 std::vector<float> boxEncodings({
535 0.0f, 0.0f, 0.0f, 0.0f,
536 0.0f, 1.0f, 0.0f, 0.0f,
537 0.0f, -1.0f, 0.0f, 0.0f,
538 0.0f, 0.0f, 0.0f, 0.0f,
539 0.0f, 1.0f, 0.0f, 0.0f,
540 0.0f, 0.0f, 0.0f, 0.0f
541 });
542 std::vector<float> scores({
543 0.0f, 0.9f, 0.8f,
544 0.0f, 0.75f, 0.72f,
545 0.0f, 0.6f, 0.5f,
546 0.0f, 0.93f, 0.95f,
547 0.0f, 0.5f, 0.4f,
548 0.0f, 0.3f, 0.2f
549 });
550 std::vector<float> anchors({
551 0.5f, 0.5f, 1.0f, 1.0f,
552 0.5f, 0.5f, 1.0f, 1.0f,
553 0.5f, 0.5f, 1.0f, 1.0f,
554 0.5f, 10.5f, 1.0f, 1.0f,
555 0.5f, 10.5f, 1.0f, 1.0f,
556 0.5f, 100.5f, 1.0f, 1.0f
557 });
558 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
559}
560
561inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
562{
563 for (size_t i = 0; i < info.GetNumElements(); i++)
564 {
565 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
566 }
567}
568
James Conroyd9fb6e22020-02-21 16:52:44 +0000569BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessRegularNmsUint8Test, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000570{
571 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
572 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
573 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
574
575 boxEncodingsInfo.SetQuantizationScale(1.0f);
576 boxEncodingsInfo.SetQuantizationOffset(1);
577 scoresInfo.SetQuantizationScale(0.01f);
578 scoresInfo.SetQuantizationOffset(0);
579 anchorsInfo.SetQuantizationScale(0.5f);
580 anchorsInfo.SetQuantizationOffset(0);
581
582 std::vector<float> boxEncodings({
583 0.0f, 0.0f, 0.0f, 0.0f,
584 0.0f, 1.0f, 0.0f, 0.0f,
585 0.0f, -1.0f, 0.0f, 0.0f,
586 0.0f, 0.0f, 0.0f, 0.0f,
587 0.0f, 1.0f, 0.0f, 0.0f,
588 0.0f, 0.0f, 0.0f, 0.0f
589 });
590 std::vector<float> scores({
591 0.0f, 0.9f, 0.8f,
592 0.0f, 0.75f, 0.72f,
593 0.0f, 0.6f, 0.5f,
594 0.0f, 0.93f, 0.95f,
595 0.0f, 0.5f, 0.4f,
596 0.0f, 0.3f, 0.2f
597 });
598 std::vector<float> anchors({
599 0.5f, 0.5f, 1.0f, 1.0f,
600 0.5f, 0.5f, 1.0f, 1.0f,
601 0.5f, 0.5f, 1.0f, 1.0f,
602 0.5f, 10.5f, 1.0f, 1.0f,
603 0.5f, 10.5f, 1.0f, 1.0f,
604 0.5f, 100.5f, 1.0f, 1.0f
605 });
606
607 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
608 std::vector<uint8_t> qScores(scores.size(), 0);
609 std::vector<uint8_t> qAnchors(anchors.size(), 0);
610 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
611 QuantizeData(qScores.data(), scores.data(), scoresInfo);
612 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000613 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000614 qScores, qAnchors,
615 1.0f, 1, 0.01f, 0, 0.5f, 0);
616}
617
James Conroyd9fb6e22020-02-21 16:52:44 +0000618BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessFastNmsTest, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000619{
620 std::vector<float> boxEncodings({
621 0.0f, 0.0f, 0.0f, 0.0f,
622 0.0f, 1.0f, 0.0f, 0.0f,
623 0.0f, -1.0f, 0.0f, 0.0f,
624 0.0f, 0.0f, 0.0f, 0.0f,
625 0.0f, 1.0f, 0.0f, 0.0f,
626 0.0f, 0.0f, 0.0f, 0.0f
627 });
628 std::vector<float> scores({
629 0.0f, 0.9f, 0.8f,
630 0.0f, 0.75f, 0.72f,
631 0.0f, 0.6f, 0.5f,
632 0.0f, 0.93f, 0.95f,
633 0.0f, 0.5f, 0.4f,
634 0.0f, 0.3f, 0.2f
635 });
636 std::vector<float> anchors({
637 0.5f, 0.5f, 1.0f, 1.0f,
638 0.5f, 0.5f, 1.0f, 1.0f,
639 0.5f, 0.5f, 1.0f, 1.0f,
640 0.5f, 10.5f, 1.0f, 1.0f,
641 0.5f, 10.5f, 1.0f, 1.0f,
642 0.5f, 100.5f, 1.0f, 1.0f
643 });
644 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
645}
646
James Conroyd9fb6e22020-02-21 16:52:44 +0000647BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessFastNmsUint8Test, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000648{
649 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
650 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
651 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
652
653 boxEncodingsInfo.SetQuantizationScale(1.0f);
654 boxEncodingsInfo.SetQuantizationOffset(1);
655 scoresInfo.SetQuantizationScale(0.01f);
656 scoresInfo.SetQuantizationOffset(0);
657 anchorsInfo.SetQuantizationScale(0.5f);
658 anchorsInfo.SetQuantizationOffset(0);
659
660 std::vector<float> boxEncodings({
661 0.0f, 0.0f, 0.0f, 0.0f,
662 0.0f, 1.0f, 0.0f, 0.0f,
663 0.0f, -1.0f, 0.0f, 0.0f,
664 0.0f, 0.0f, 0.0f, 0.0f,
665 0.0f, 1.0f, 0.0f, 0.0f,
666 0.0f, 0.0f, 0.0f, 0.0f
667 });
668 std::vector<float> scores({
669 0.0f, 0.9f, 0.8f,
670 0.0f, 0.75f, 0.72f,
671 0.0f, 0.6f, 0.5f,
672 0.0f, 0.93f, 0.95f,
673 0.0f, 0.5f, 0.4f,
674 0.0f, 0.3f, 0.2f
675 });
676 std::vector<float> anchors({
677 0.5f, 0.5f, 1.0f, 1.0f,
678 0.5f, 0.5f, 1.0f, 1.0f,
679 0.5f, 0.5f, 1.0f, 1.0f,
680 0.5f, 10.5f, 1.0f, 1.0f,
681 0.5f, 10.5f, 1.0f, 1.0f,
682 0.5f, 100.5f, 1.0f, 1.0f
683 });
684
685 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
686 std::vector<uint8_t> qScores(scores.size(), 0);
687 std::vector<uint8_t> qAnchors(anchors.size(), 0);
688 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
689 QuantizeData(qScores.data(), scores.data(), scoresInfo);
690 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000691 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000692 qScores, qAnchors,
693 1.0f, 1, 0.01f, 0, 0.5f, 0);
694}
695
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100696BOOST_AUTO_TEST_SUITE_END()