blob: 2f4c8479714841477f00d8f04026110b3fb15578 [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
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +01008#include <backendsCommon/test/AbsEndToEndTestImpl.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>
Sadik Armagan062e0e92019-10-14 10:31:43 +010015#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Nikhil Raj1c8adac2019-07-22 11:27:29 +010016#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
Francis Murtaghb3fc2522019-08-09 13:20:50 +010017#include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010018#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010019#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010020#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010021
22#include <boost/test/unit_test.hpp>
23
24BOOST_AUTO_TEST_SUITE(NeonEndToEnd)
25
narpra01b9546cf2018-11-20 15:21:28 +000026std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuAcc};
27
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010028// Abs
29BOOST_AUTO_TEST_CASE(NeonAbsEndToEndTestFloat32)
30{
31 AbsEndToEnd<armnn::DataType::Float32>(defaultBackends);
32}
33
34// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010035BOOST_AUTO_TEST_CASE(ConstantUsage_Neon_Float32)
36{
narpra01b9546cf2018-11-20 15:21:28 +000037 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010038}
39
Matteo Martincighdb16dd32019-08-27 16:41:11 +010040#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010041
42// This test unit needs the reference backend, it's not available if the reference backend is not built
43
Aron Virginas-Tar70104002018-10-24 15:33:28 +010044BOOST_AUTO_TEST_CASE(FallbackToCpuRef)
45{
46 using namespace armnn;
47
48 // Create runtime in which test will run and allow fallback to CpuRef.
49 IRuntime::CreationOptions options;
50 IRuntimePtr runtime(IRuntime::Create(options));
51
52 // Builds up the structure of the network.
53 INetworkPtr net(INetwork::Create());
54
55 IConnectableLayer* input = net->AddInputLayer(0);
56
57 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
58 NormalizationDescriptor descriptor;
59 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
60
61 IConnectableLayer* output = net->AddOutputLayer(0);
62
63 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
64 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
65
66 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
67 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
68
69 // optimize the network
70 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
71 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
72
73 // Load it into the runtime. It should pass.
74 NetworkId netId;
75 BOOST_TEST(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
76}
77
Matteo Martincighe67edb22019-08-14 14:05:46 +010078#endif
79
kevmay01eed85922019-01-28 08:37:25 +000080BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndTest)
81{
82 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
83 0, 0, 0, 0, 0, 0, 0, 0 });
84
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010085 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
86 ComparisonOperation::Greater,
87 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +000088}
89
90BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndUint8Test)
91{
92 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
93 0, 0, 0, 0, 0, 0, 0, 0 });
94
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010095 ComparisonSimpleEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends,
96 ComparisonOperation::Greater,
97 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +000098}
99
100BOOST_AUTO_TEST_CASE(NeonGreaterBroadcastEndToEndTest)
101{
102 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
103 1, 1, 1, 1, 1, 1 });
104
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100105 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
106 ComparisonOperation::Greater,
107 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000108}
109
110BOOST_AUTO_TEST_CASE(NeonGreaterBroadcastEndToEndUint8Test)
111{
112 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
113 1, 1, 1, 1, 1, 1 });
114
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100115 ComparisonBroadcastEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends,
116 ComparisonOperation::Greater,
117 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000118}
119
Jim Flynne242f2d2019-05-22 14:24:13 +0100120BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000121{
Jim Flynne242f2d2019-05-22 14:24:13 +0100122 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000123}
124
Jim Flynne242f2d2019-05-22 14:24:13 +0100125BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000126{
Jim Flynne242f2d2019-05-22 14:24:13 +0100127 ConcatDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000128}
129
Jim Flynne242f2d2019-05-22 14:24:13 +0100130BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000131{
Jim Flynne242f2d2019-05-22 14:24:13 +0100132 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000133}
134
Jim Flynne242f2d2019-05-22 14:24:13 +0100135BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000136{
Jim Flynne242f2d2019-05-22 14:24:13 +0100137 ConcatDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000138}
139
Jim Flynne242f2d2019-05-22 14:24:13 +0100140BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000141{
Jim Flynne242f2d2019-05-22 14:24:13 +0100142 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000143}
144
Jim Flynne242f2d2019-05-22 14:24:13 +0100145BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000146{
Jim Flynne242f2d2019-05-22 14:24:13 +0100147 ConcatDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000148}
149
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100150// DepthToSpace
151BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
152{
153 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
154}
155
156BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
157{
158 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
159}
160
161BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
162{
163 DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
164}
165
166BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
167{
168 DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
169}
170
171BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
172{
173 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
174}
175
176BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
177{
178 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
179}
180
181BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
182{
183 DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
184}
185
186BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
187{
188 DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
189}
190
191// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100192BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
193{
194 DequantizeEndToEndSimple<armnn::DataType::QuantisedAsymm8>(defaultBackends);
195}
196
197BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
198{
199 DequantizeEndToEndOffset<armnn::DataType::QuantisedAsymm8>(defaultBackends);
200}
201
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100202BOOST_AUTO_TEST_CASE(NeonPreluEndToEndFloat32Test)
203{
204 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
205}
206
207BOOST_AUTO_TEST_CASE(NeonPreluEndToEndTestUint8Test)
208{
209 PreluEndToEndPositiveTest<armnn::DataType::QuantisedAsymm8>(defaultBackends);
210}
211
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100212BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNhwcEndToEndTest1)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100213{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100214 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100215}
216
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100217BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNchwEndToEndTest1)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100218{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100219 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100220}
221
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100222BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNhwcEndToEndTest2)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100223{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100224 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100225}
226
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100227BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNchwEndToEndTest2)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100228{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100229 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100230}
231
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100232BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100233{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100234 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100235}
236
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100237BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100238{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100239 Splitter1dEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100240}
241
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100242BOOST_AUTO_TEST_CASE(NeonSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100243{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100244 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100245}
246
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100247BOOST_AUTO_TEST_CASE(NeonSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100248{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100249 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100250}
251
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100252BOOST_AUTO_TEST_CASE(NeonSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100253{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100254 Splitter2dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100255}
256
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100257BOOST_AUTO_TEST_CASE(NeonSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100258{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100259 Splitter2dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100260}
261
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100262BOOST_AUTO_TEST_CASE(NeonSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100263{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100264 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100265}
266
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100267BOOST_AUTO_TEST_CASE(NeonSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100268{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100269 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
270}
271
272BOOST_AUTO_TEST_CASE(NeonSplitter3dDim2EndToEndTest)
273{
274 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
275}
276
277BOOST_AUTO_TEST_CASE(NeonSplitter3dDim0EndToEndUint8Test)
278{
279 Splitter3dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
280}
281
282BOOST_AUTO_TEST_CASE(NeonSplitter3dDim1EndToEndUint8Test)
283{
284 Splitter3dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
285}
286
287BOOST_AUTO_TEST_CASE(NeonSplitter3dDim2EndToEndUint8Test)
288{
289 Splitter3dDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
290}
291
292BOOST_AUTO_TEST_CASE(NeonSplitter4dDim0EndToEndTest)
293{
294 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
295}
296
297BOOST_AUTO_TEST_CASE(NeonSplitter4dDim1EndToEndTest)
298{
299 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
300}
301
302BOOST_AUTO_TEST_CASE(NeonSplitter4dDim2EndToEndTest)
303{
304 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
305}
306
307BOOST_AUTO_TEST_CASE(NeonSplitter4dDim3EndToEndTest)
308{
309 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
310}
311
312BOOST_AUTO_TEST_CASE(NeonSplitter4dDim0EndToEndUint8Test)
313{
314 Splitter4dDim0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
315}
316
317BOOST_AUTO_TEST_CASE(NeonSplitter4dDim1EndToEndUint8Test)
318{
319 Splitter4dDim1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
320}
321
322BOOST_AUTO_TEST_CASE(NeonSplitter4dDim2EndToEndUint8Test)
323{
324 Splitter4dDim2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
325}
326
327BOOST_AUTO_TEST_CASE(NeonSplitter4dDim3EndToEndUint8Test)
328{
329 Splitter4dDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100330}
331
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100332BOOST_AUTO_TEST_CASE(NeonQuantizedLstmEndToEndTest)
333{
334 QuantizedLstmEndToEnd(defaultBackends);
335}
336
Sadik Armagan581742d2019-08-12 14:11:37 +0100337BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndFloatNchwTest)
338{
339 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
340 defaultBackends, armnn::DataLayout::NCHW);
341}
342
343BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndUint8NchwTest)
344{
345 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>(
346 defaultBackends, armnn::DataLayout::NCHW);
347}
348
349BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndFloatNhwcTest)
350{
351 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
352 defaultBackends, armnn::DataLayout::NHWC);
353}
354
355BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndUint8NhwcTest)
356{
357 TransposeConvolution2dEndToEnd<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>(
358 defaultBackends, armnn::DataLayout::NHWC);
359}
360
David Monahan3fb7e102019-08-20 11:25:29 +0100361BOOST_AUTO_TEST_CASE(NeonImportNonAlignedInputPointerTest)
362{
363 ImportNonAlignedInputPointerTest(defaultBackends);
364}
365
Ferran Balaguer83239f92019-09-19 11:49:25 +0100366BOOST_AUTO_TEST_CASE(NeonExportNonAlignedOutputPointerTest)
David Monahan3fb7e102019-08-20 11:25:29 +0100367{
Ferran Balaguer83239f92019-09-19 11:49:25 +0100368 ExportNonAlignedOutputPointerTest(defaultBackends);
369}
370
James Conroyffab16f2019-11-07 14:37:09 +0000371BOOST_AUTO_TEST_CASE(NeonImportAlignedPointerTest, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100372{
373 ImportAlignedPointerTest(defaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100374}
375
James Conroyffab16f2019-11-07 14:37:09 +0000376BOOST_AUTO_TEST_CASE(NeonImportOnlyWorkload, * boost::unit_test::disabled())
David Monahan3fb7e102019-08-20 11:25:29 +0100377{
Ferran Balaguer83239f92019-09-19 11:49:25 +0100378 ImportOnlyWorkload(defaultBackends);
379}
David Monahan3fb7e102019-08-20 11:25:29 +0100380
James Conroyffab16f2019-11-07 14:37:09 +0000381BOOST_AUTO_TEST_CASE(NeonExportOnlyWorkload, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100382{
383 ExportOnlyWorkload(defaultBackends);
384}
David Monahan3fb7e102019-08-20 11:25:29 +0100385
James Conroyffab16f2019-11-07 14:37:09 +0000386BOOST_AUTO_TEST_CASE(NeonImportAndExportWorkload, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100387{
388 ImportAndExportWorkload(defaultBackends);
389}
David Monahan3fb7e102019-08-20 11:25:29 +0100390
James Conroyffab16f2019-11-07 14:37:09 +0000391BOOST_AUTO_TEST_CASE(NeonExportOutputWithSeveralOutputSlotConnectionsTest, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100392{
393 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100394}
395
Sadik Armagan062e0e92019-10-14 10:31:43 +0100396// InstanceNormalization
397BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest1)
398{
399 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
400}
401
402BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest2)
403{
404 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
405}
406
James Conroy68a4dbc2019-11-13 15:35:59 +0000407// ArgMinMax
408BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTest)
409{
410 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
411}
412
413BOOST_AUTO_TEST_CASE(NeonArgMinSimpleTest)
414{
415 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
416}
417
418BOOST_AUTO_TEST_CASE(NeonArgMaxAxis0Test)
419{
420 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
421}
422
423BOOST_AUTO_TEST_CASE(NeonArgMinAxis0Test)
424{
425 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
426}
427
428BOOST_AUTO_TEST_CASE(NeonArgMaxAxis1Test)
429{
430 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
431}
432
433BOOST_AUTO_TEST_CASE(NeonArgMinAxis1Test)
434{
435 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
436}
437
438BOOST_AUTO_TEST_CASE(NeonArgMaxAxis2Test)
439{
440 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
441}
442
443BOOST_AUTO_TEST_CASE(NeonArgMinAxis2Test)
444{
445 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
446}
447
448BOOST_AUTO_TEST_CASE(NeonArgMaxAxis3Test)
449{
450 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
451}
452
453BOOST_AUTO_TEST_CASE(NeonArgMinAxis3Test)
454{
455 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
456}
457
Francis Murtagh52ec3462019-11-19 12:24:19 +0000458BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTestQuantisedAsymm8)
459{
460 ArgMaxEndToEndSimple<armnn::DataType::QuantisedAsymm8>(defaultBackends);
461}
462
463BOOST_AUTO_TEST_CASE(NeonArgMinSimpleTestQuantisedAsymm8)
464{
465 ArgMinEndToEndSimple<armnn::DataType::QuantisedAsymm8>(defaultBackends);
466}
467
468BOOST_AUTO_TEST_CASE(NeonArgMaxAxis0TestQuantisedAsymm8)
469{
470 ArgMaxAxis0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
471}
472
473BOOST_AUTO_TEST_CASE(NeonArgMinAxis0TestQuantisedAsymm8)
474{
475 ArgMinAxis0EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
476}
477
478BOOST_AUTO_TEST_CASE(NeonArgMaxAxis1TestQuantisedAsymm8)
479{
480 ArgMaxAxis1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
481}
482
483BOOST_AUTO_TEST_CASE(NeonArgMinAxis1TestQuantisedAsymm8)
484{
485 ArgMinAxis1EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
486}
487
488BOOST_AUTO_TEST_CASE(NeonArgMaxAxis2TestQuantisedAsymm8)
489{
490 ArgMaxAxis2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
491}
492
493BOOST_AUTO_TEST_CASE(NeonArgMinAxis2TestQuantisedAsymm8)
494{
495 ArgMinAxis2EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
496}
497
498BOOST_AUTO_TEST_CASE(NeonArgMaxAxis3TestQuantisedAsymm8)
499{
500 ArgMaxAxis3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
501}
502
503BOOST_AUTO_TEST_CASE(NeonArgMinAxis3TestQuantisedAsymm8)
504{
505 ArgMinAxis3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
506}
507
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000508BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessRegularNmsTest)
509{
510 std::vector<float> boxEncodings({
511 0.0f, 0.0f, 0.0f, 0.0f,
512 0.0f, 1.0f, 0.0f, 0.0f,
513 0.0f, -1.0f, 0.0f, 0.0f,
514 0.0f, 0.0f, 0.0f, 0.0f,
515 0.0f, 1.0f, 0.0f, 0.0f,
516 0.0f, 0.0f, 0.0f, 0.0f
517 });
518 std::vector<float> scores({
519 0.0f, 0.9f, 0.8f,
520 0.0f, 0.75f, 0.72f,
521 0.0f, 0.6f, 0.5f,
522 0.0f, 0.93f, 0.95f,
523 0.0f, 0.5f, 0.4f,
524 0.0f, 0.3f, 0.2f
525 });
526 std::vector<float> anchors({
527 0.5f, 0.5f, 1.0f, 1.0f,
528 0.5f, 0.5f, 1.0f, 1.0f,
529 0.5f, 0.5f, 1.0f, 1.0f,
530 0.5f, 10.5f, 1.0f, 1.0f,
531 0.5f, 10.5f, 1.0f, 1.0f,
532 0.5f, 100.5f, 1.0f, 1.0f
533 });
534 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
535}
536
537inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
538{
539 for (size_t i = 0; i < info.GetNumElements(); i++)
540 {
541 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
542 }
543}
544
545BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessRegularNmsUint8Test)
546{
547 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
548 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
549 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
550
551 boxEncodingsInfo.SetQuantizationScale(1.0f);
552 boxEncodingsInfo.SetQuantizationOffset(1);
553 scoresInfo.SetQuantizationScale(0.01f);
554 scoresInfo.SetQuantizationOffset(0);
555 anchorsInfo.SetQuantizationScale(0.5f);
556 anchorsInfo.SetQuantizationOffset(0);
557
558 std::vector<float> boxEncodings({
559 0.0f, 0.0f, 0.0f, 0.0f,
560 0.0f, 1.0f, 0.0f, 0.0f,
561 0.0f, -1.0f, 0.0f, 0.0f,
562 0.0f, 0.0f, 0.0f, 0.0f,
563 0.0f, 1.0f, 0.0f, 0.0f,
564 0.0f, 0.0f, 0.0f, 0.0f
565 });
566 std::vector<float> scores({
567 0.0f, 0.9f, 0.8f,
568 0.0f, 0.75f, 0.72f,
569 0.0f, 0.6f, 0.5f,
570 0.0f, 0.93f, 0.95f,
571 0.0f, 0.5f, 0.4f,
572 0.0f, 0.3f, 0.2f
573 });
574 std::vector<float> anchors({
575 0.5f, 0.5f, 1.0f, 1.0f,
576 0.5f, 0.5f, 1.0f, 1.0f,
577 0.5f, 0.5f, 1.0f, 1.0f,
578 0.5f, 10.5f, 1.0f, 1.0f,
579 0.5f, 10.5f, 1.0f, 1.0f,
580 0.5f, 100.5f, 1.0f, 1.0f
581 });
582
583 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
584 std::vector<uint8_t> qScores(scores.size(), 0);
585 std::vector<uint8_t> qAnchors(anchors.size(), 0);
586 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
587 QuantizeData(qScores.data(), scores.data(), scoresInfo);
588 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
589 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, qBoxEncodings,
590 qScores, qAnchors,
591 1.0f, 1, 0.01f, 0, 0.5f, 0);
592}
593
594BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessFastNmsTest)
595{
596 std::vector<float> boxEncodings({
597 0.0f, 0.0f, 0.0f, 0.0f,
598 0.0f, 1.0f, 0.0f, 0.0f,
599 0.0f, -1.0f, 0.0f, 0.0f,
600 0.0f, 0.0f, 0.0f, 0.0f,
601 0.0f, 1.0f, 0.0f, 0.0f,
602 0.0f, 0.0f, 0.0f, 0.0f
603 });
604 std::vector<float> scores({
605 0.0f, 0.9f, 0.8f,
606 0.0f, 0.75f, 0.72f,
607 0.0f, 0.6f, 0.5f,
608 0.0f, 0.93f, 0.95f,
609 0.0f, 0.5f, 0.4f,
610 0.0f, 0.3f, 0.2f
611 });
612 std::vector<float> anchors({
613 0.5f, 0.5f, 1.0f, 1.0f,
614 0.5f, 0.5f, 1.0f, 1.0f,
615 0.5f, 0.5f, 1.0f, 1.0f,
616 0.5f, 10.5f, 1.0f, 1.0f,
617 0.5f, 10.5f, 1.0f, 1.0f,
618 0.5f, 100.5f, 1.0f, 1.0f
619 });
620 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
621}
622
623BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
624{
625 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
626 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
627 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
628
629 boxEncodingsInfo.SetQuantizationScale(1.0f);
630 boxEncodingsInfo.SetQuantizationOffset(1);
631 scoresInfo.SetQuantizationScale(0.01f);
632 scoresInfo.SetQuantizationOffset(0);
633 anchorsInfo.SetQuantizationScale(0.5f);
634 anchorsInfo.SetQuantizationOffset(0);
635
636 std::vector<float> boxEncodings({
637 0.0f, 0.0f, 0.0f, 0.0f,
638 0.0f, 1.0f, 0.0f, 0.0f,
639 0.0f, -1.0f, 0.0f, 0.0f,
640 0.0f, 0.0f, 0.0f, 0.0f,
641 0.0f, 1.0f, 0.0f, 0.0f,
642 0.0f, 0.0f, 0.0f, 0.0f
643 });
644 std::vector<float> scores({
645 0.0f, 0.9f, 0.8f,
646 0.0f, 0.75f, 0.72f,
647 0.0f, 0.6f, 0.5f,
648 0.0f, 0.93f, 0.95f,
649 0.0f, 0.5f, 0.4f,
650 0.0f, 0.3f, 0.2f
651 });
652 std::vector<float> anchors({
653 0.5f, 0.5f, 1.0f, 1.0f,
654 0.5f, 0.5f, 1.0f, 1.0f,
655 0.5f, 0.5f, 1.0f, 1.0f,
656 0.5f, 10.5f, 1.0f, 1.0f,
657 0.5f, 10.5f, 1.0f, 1.0f,
658 0.5f, 100.5f, 1.0f, 1.0f
659 });
660
661 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
662 std::vector<uint8_t> qScores(scores.size(), 0);
663 std::vector<uint8_t> qAnchors(anchors.size(), 0);
664 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
665 QuantizeData(qScores.data(), scores.data(), scoresInfo);
666 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
667 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, qBoxEncodings,
668 qScores, qAnchors,
669 1.0f, 1, 0.01f, 0, 0.5f, 0);
670}
671
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100672BOOST_AUTO_TEST_SUITE_END()