2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
6 #include <backendsCommon/test/EndToEndTestImpl.hpp>
8 #include <backendsCommon/test/ActivationEndToEndTestImpl.hpp>
9 #include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
10 #include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
11 #include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
12 #include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
13 #include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
14 #include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
15 #include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
16 #include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
17 #include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
18 #include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
19 #include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
20 #include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
21 #include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
23 #include <boost/test/unit_test.hpp>
25 BOOST_AUTO_TEST_SUITE(ClEndToEnd)
27 std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::GpuAcc};
30 BOOST_AUTO_TEST_CASE(ClAbsEndToEndTestFloat32)
32 std::vector<float> expectedOutput =
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
38 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
44 BOOST_AUTO_TEST_CASE(ConstantUsage_Cl_Float32)
46 ConstantUsageFloat32Test(defaultBackends);
49 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim0Test)
51 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
54 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim0Uint8Test)
56 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
59 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim1Test)
61 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
64 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim1Uint8Test)
66 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
69 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim3Test)
71 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
74 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim3Uint8Test)
76 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
80 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
82 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
85 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
87 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
90 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
92 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
95 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
97 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
100 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
102 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
105 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
107 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
110 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
112 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
115 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
117 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
121 BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
123 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
126 BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
128 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
131 BOOST_AUTO_TEST_CASE(ClStridedSliceInvalidSliceEndToEndTest)
133 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
136 BOOST_AUTO_TEST_CASE(ClEluEndToEndTestFloat32)
138 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
141 BOOST_AUTO_TEST_CASE(ClEluEndToEndTestFloat16)
143 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
146 BOOST_AUTO_TEST_CASE(ClGreaterSimpleEndToEndTest)
148 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
149 0, 0, 0, 0, 0, 0, 0, 0 });
151 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
152 ComparisonOperation::Greater,
156 BOOST_AUTO_TEST_CASE(ClGreaterSimpleEndToEndUint8Test)
158 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
159 0, 0, 0, 0, 0, 0, 0, 0 });
161 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
162 ComparisonOperation::Greater,
166 BOOST_AUTO_TEST_CASE(ClGreaterBroadcastEndToEndTest)
168 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
171 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
172 ComparisonOperation::Greater,
176 BOOST_AUTO_TEST_CASE(ClGreaterBroadcastEndToEndUint8Test)
178 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
181 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
182 ComparisonOperation::Greater,
187 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestFloat32)
189 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
192 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestFloat16)
194 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
197 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestQAsymmS8)
199 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
202 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestQAsymmU8)
204 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
207 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestQSymmS16)
209 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
212 // InstanceNormalization
213 BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNhwcEndToEndTest1)
215 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
218 BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNchwEndToEndTest1)
220 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
223 BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNhwcEndToEndTest2)
225 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
228 BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNchwEndToEndTest2)
230 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
233 BOOST_AUTO_TEST_CASE(ClPreluEndToEndFloat32Test)
235 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
238 BOOST_AUTO_TEST_CASE(ClPreluEndToEndTestUint8)
240 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
243 BOOST_AUTO_TEST_CASE(ClSpaceToDepthNhwcEndToEndTest1)
245 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
248 BOOST_AUTO_TEST_CASE(ClSpaceToDepthNchwEndToEndTest1)
250 SpaceToDepthNchwEndToEndTest1(defaultBackends);
253 BOOST_AUTO_TEST_CASE(ClSpaceToDepthNhwcEndToEndTest2)
255 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
258 BOOST_AUTO_TEST_CASE(ClSpaceToDepthNchwEndToEndTest2)
260 SpaceToDepthNchwEndToEndTest2(defaultBackends);
263 BOOST_AUTO_TEST_CASE(ClSplitter1dEndToEndTest)
265 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
268 BOOST_AUTO_TEST_CASE(ClSplitter1dEndToEndUint8Test)
270 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
273 BOOST_AUTO_TEST_CASE(ClSplitter2dDim0EndToEndTest)
275 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
278 BOOST_AUTO_TEST_CASE(ClSplitter2dDim1EndToEndTest)
280 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
283 BOOST_AUTO_TEST_CASE(ClSplitter2dDim0EndToEndUint8Test)
285 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
288 BOOST_AUTO_TEST_CASE(ClSplitter2dDim1EndToEndUint8Test)
290 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
293 BOOST_AUTO_TEST_CASE(ClSplitter3dDim0EndToEndTest)
295 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
298 BOOST_AUTO_TEST_CASE(ClSplitter3dDim1EndToEndTest)
300 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
303 BOOST_AUTO_TEST_CASE(ClSplitter3dDim2EndToEndTest)
305 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
308 BOOST_AUTO_TEST_CASE(ClSplitter3dDim0EndToEndUint8Test)
310 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
313 BOOST_AUTO_TEST_CASE(ClSplitter3dDim1EndToEndUint8Test)
315 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
318 BOOST_AUTO_TEST_CASE(ClSplitter3dDim2EndToEndUint8Test)
320 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
323 BOOST_AUTO_TEST_CASE(ClSplitter4dDim0EndToEndTest)
325 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
328 BOOST_AUTO_TEST_CASE(ClSplitter4dDim1EndToEndTest)
330 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
333 BOOST_AUTO_TEST_CASE(ClSplitter4dDim2EndToEndTest)
335 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
338 BOOST_AUTO_TEST_CASE(ClSplitter4dDim3EndToEndTest)
340 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
343 BOOST_AUTO_TEST_CASE(ClSplitter4dDim0EndToEndUint8Test)
345 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
348 BOOST_AUTO_TEST_CASE(ClSplitter4dDim1EndToEndUint8Test)
350 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
353 BOOST_AUTO_TEST_CASE(ClSplitter4dDim2EndToEndUint8Test)
355 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
358 BOOST_AUTO_TEST_CASE(ClSplitter4dDim3EndToEndUint8Test)
360 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
363 // TransposeConvolution2d
364 BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndFloatNchwTest)
366 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
367 defaultBackends, armnn::DataLayout::NCHW);
370 BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndUint8NchwTest)
372 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
373 defaultBackends, armnn::DataLayout::NCHW);
376 BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndFloatNhwcTest)
378 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
379 defaultBackends, armnn::DataLayout::NHWC);
382 BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndUint8NhwcTest)
384 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
385 defaultBackends, armnn::DataLayout::NHWC);
388 BOOST_AUTO_TEST_CASE(ClQuantizedLstmEndToEndTest)
390 QuantizedLstmEndToEnd(defaultBackends);
394 BOOST_AUTO_TEST_CASE(ClArgMaxSimpleTest)
396 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
399 BOOST_AUTO_TEST_CASE(ClArgMinSimpleTest)
401 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
404 BOOST_AUTO_TEST_CASE(ClArgMaxAxis0Test)
406 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
409 BOOST_AUTO_TEST_CASE(ClArgMinAxis0Test)
411 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
414 BOOST_AUTO_TEST_CASE(ClArgMaxAxis1Test)
416 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
419 BOOST_AUTO_TEST_CASE(ClArgMinAxis1Test)
421 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
424 BOOST_AUTO_TEST_CASE(ClArgMaxAxis2Test)
426 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
429 BOOST_AUTO_TEST_CASE(ClArgMinAxis2Test)
431 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
434 BOOST_AUTO_TEST_CASE(ClArgMaxAxis3Test)
436 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
439 BOOST_AUTO_TEST_CASE(ClArgMinAxis3Test)
441 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
444 BOOST_AUTO_TEST_CASE(ClArgMaxSimpleTestQAsymmU8)
446 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
449 BOOST_AUTO_TEST_CASE(ClArgMinSimpleTestQAsymmU8)
451 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
454 BOOST_AUTO_TEST_CASE(ClArgMaxAxis0TestQAsymmU8)
456 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
459 BOOST_AUTO_TEST_CASE(ClArgMinAxis0TestQAsymmU8)
461 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
464 BOOST_AUTO_TEST_CASE(ClArgMaxAxis1TestQAsymmU8)
466 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
469 BOOST_AUTO_TEST_CASE(ClArgMinAxis1TestQAsymmU8)
471 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
474 BOOST_AUTO_TEST_CASE(ClArgMaxAxis2TestQAsymmU8)
476 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
479 BOOST_AUTO_TEST_CASE(ClArgMinAxis2TestQAsymmU8)
481 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
484 BOOST_AUTO_TEST_CASE(ClArgMaxAxis3TestQAsymmU8)
486 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
489 BOOST_AUTO_TEST_CASE(ClArgMinAxis3TestQAsymmU8)
491 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
494 BOOST_AUTO_TEST_CASE(ClQLstmEndToEndTest)
496 QLstmEndToEnd(defaultBackends);
499 BOOST_AUTO_TEST_SUITE_END()