ArmNN
 21.02
ClEndToEndTests.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 
23 
24 #include <boost/test/unit_test.hpp>
25 
26 BOOST_AUTO_TEST_SUITE(ClEndToEnd)
27 
29 
30 // Abs
31 BOOST_AUTO_TEST_CASE(ClAbsEndToEndTestFloat32)
32 {
33  std::vector<float> expectedOutput =
34  {
35  1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
36  3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
37  };
38 
39  ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
40  UnaryOperation::Abs,
41  expectedOutput);
42 }
43 
44 // Constant
45 BOOST_AUTO_TEST_CASE(ConstantUsage_Cl_Float32)
46 {
47  ConstantUsageFloat32Test(defaultBackends);
48 }
49 
50 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim0Test)
51 {
52  ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
53 }
54 
55 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim0Uint8Test)
56 {
57  ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
58 }
59 
60 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim1Test)
61 {
62  ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
63 }
64 
65 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim1Uint8Test)
66 {
67  ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
68 }
69 
70 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim3Test)
71 {
72  ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
73 }
74 
75 BOOST_AUTO_TEST_CASE(ClConcatEndToEndDim3Uint8Test)
76 {
77  ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
78 }
79 
80 // DepthToSpace
81 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
82 {
83  DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
84 }
85 
86 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
87 {
88  DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
89 }
90 
91 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
92 {
93  DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
94 }
95 
96 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
97 {
98  DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
99 }
100 
101 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
102 {
103  DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
104 }
105 
106 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
107 {
108  DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
109 }
110 
111 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
112 {
113  DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
114 }
115 
116 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
117 {
118  DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
119 }
120 
121 // Dequantize
122 BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
123 {
124  DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
125 }
126 
127 BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
128 {
129  DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
130 }
131 
132 BOOST_AUTO_TEST_CASE(ClStridedSliceInvalidSliceEndToEndTest)
133 {
134  StridedSliceInvalidSliceEndToEndTest(defaultBackends);
135 }
136 
137 BOOST_AUTO_TEST_CASE(ClEluEndToEndTestFloat32)
138 {
139  EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
140 }
141 
142 BOOST_AUTO_TEST_CASE(ClEluEndToEndTestFloat16)
143 {
144  EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
145 }
146 
147 BOOST_AUTO_TEST_CASE(ClGreaterSimpleEndToEndTest)
148 {
149  const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
150  0, 0, 0, 0, 0, 0, 0, 0 });
151 
152  ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
153  ComparisonOperation::Greater,
154  expectedOutput);
155 }
156 
157 BOOST_AUTO_TEST_CASE(ClGreaterSimpleEndToEndUint8Test)
158 {
159  const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
160  0, 0, 0, 0, 0, 0, 0, 0 });
161 
162  ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
163  ComparisonOperation::Greater,
164  expectedOutput);
165 }
166 
167 BOOST_AUTO_TEST_CASE(ClGreaterBroadcastEndToEndTest)
168 {
169  const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
170  1, 1, 1, 1, 1, 1 });
171 
172  ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
173  ComparisonOperation::Greater,
174  expectedOutput);
175 }
176 
177 BOOST_AUTO_TEST_CASE(ClGreaterBroadcastEndToEndUint8Test)
178 {
179  const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
180  1, 1, 1, 1, 1, 1 });
181 
182  ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
183  ComparisonOperation::Greater,
184  expectedOutput);
185 }
186 
187 // HardSwish
188 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestFloat32)
189 {
190  HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
191 }
192 
193 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestFloat16)
194 {
195  HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
196 }
197 
198 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestQAsymmS8)
199 {
200  HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
201 }
202 
203 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestQAsymmU8)
204 {
205  HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
206 }
207 
208 BOOST_AUTO_TEST_CASE(ClHardSwishEndToEndTestQSymmS16)
209 {
210  HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
211 }
212 
213 // InstanceNormalization
214 BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNhwcEndToEndTest1)
215 {
217 }
218 
219 BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNchwEndToEndTest1)
220 {
222 }
223 
224 BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNhwcEndToEndTest2)
225 {
227 }
228 
229 BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNchwEndToEndTest2)
230 {
232 }
233 
234 // Fill
235 BOOST_AUTO_TEST_CASE(ClFillEndToEndTest)
236 {
237  FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
238 }
239 
240 BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16)
241 {
242  FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
243 }
244 
245 BOOST_AUTO_TEST_CASE(ClFillEndToEndTestInt32)
246 {
247  FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
248 }
249 
250 // Prelu
251 BOOST_AUTO_TEST_CASE(ClPreluEndToEndFloat32Test)
252 {
253  PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
254 }
255 
256 BOOST_AUTO_TEST_CASE(ClPreluEndToEndTestUint8)
257 {
258  PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
259 }
260 
261 BOOST_AUTO_TEST_CASE(ClSpaceToDepthNhwcEndToEndTest1)
262 {
264 }
265 
266 BOOST_AUTO_TEST_CASE(ClSpaceToDepthNchwEndToEndTest1)
267 {
269 }
270 
271 BOOST_AUTO_TEST_CASE(ClSpaceToDepthNhwcEndToEndTest2)
272 {
274 }
275 
276 BOOST_AUTO_TEST_CASE(ClSpaceToDepthNchwEndToEndTest2)
277 {
279 }
280 
281 BOOST_AUTO_TEST_CASE(ClSplitter1dEndToEndTest)
282 {
283  Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
284 }
285 
286 BOOST_AUTO_TEST_CASE(ClSplitter1dEndToEndUint8Test)
287 {
288  Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
289 }
290 
291 BOOST_AUTO_TEST_CASE(ClSplitter2dDim0EndToEndTest)
292 {
293  Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
294 }
295 
296 BOOST_AUTO_TEST_CASE(ClSplitter2dDim1EndToEndTest)
297 {
298  Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
299 }
300 
301 BOOST_AUTO_TEST_CASE(ClSplitter2dDim0EndToEndUint8Test)
302 {
303  Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
304 }
305 
306 BOOST_AUTO_TEST_CASE(ClSplitter2dDim1EndToEndUint8Test)
307 {
308  Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
309 }
310 
311 BOOST_AUTO_TEST_CASE(ClSplitter3dDim0EndToEndTest)
312 {
313  Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
314 }
315 
316 BOOST_AUTO_TEST_CASE(ClSplitter3dDim1EndToEndTest)
317 {
318  Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
319 }
320 
321 BOOST_AUTO_TEST_CASE(ClSplitter3dDim2EndToEndTest)
322 {
323  Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
324 }
325 
326 BOOST_AUTO_TEST_CASE(ClSplitter3dDim0EndToEndUint8Test)
327 {
328  Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
329 }
330 
331 BOOST_AUTO_TEST_CASE(ClSplitter3dDim1EndToEndUint8Test)
332 {
333  Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
334 }
335 
336 BOOST_AUTO_TEST_CASE(ClSplitter3dDim2EndToEndUint8Test)
337 {
338  Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
339 }
340 
341 BOOST_AUTO_TEST_CASE(ClSplitter4dDim0EndToEndTest)
342 {
343  Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
344 }
345 
346 BOOST_AUTO_TEST_CASE(ClSplitter4dDim1EndToEndTest)
347 {
348  Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
349 }
350 
351 BOOST_AUTO_TEST_CASE(ClSplitter4dDim2EndToEndTest)
352 {
353  Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
354 }
355 
356 BOOST_AUTO_TEST_CASE(ClSplitter4dDim3EndToEndTest)
357 {
358  Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
359 }
360 
361 BOOST_AUTO_TEST_CASE(ClSplitter4dDim0EndToEndUint8Test)
362 {
363  Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
364 }
365 
366 BOOST_AUTO_TEST_CASE(ClSplitter4dDim1EndToEndUint8Test)
367 {
368  Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
369 }
370 
371 BOOST_AUTO_TEST_CASE(ClSplitter4dDim2EndToEndUint8Test)
372 {
373  Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
374 }
375 
376 BOOST_AUTO_TEST_CASE(ClSplitter4dDim3EndToEndUint8Test)
377 {
378  Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
379 }
380 
381 // TransposeConvolution2d
382 BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndFloatNchwTest)
383 {
384  TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
386 }
387 
388 BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndUint8NchwTest)
389 {
390  TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
392 }
393 
394 BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndFloatNhwcTest)
395 {
396  TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
398 }
399 
400 BOOST_AUTO_TEST_CASE(ClTransposeConvolution2dEndToEndUint8NhwcTest)
401 {
402  TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
404 }
405 
406 BOOST_AUTO_TEST_CASE(ClQuantizedLstmEndToEndTest)
407 {
409 }
410 
411 // ArgMinMax
412 BOOST_AUTO_TEST_CASE(ClArgMaxSimpleTest)
413 {
414  ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
415 }
416 
417 BOOST_AUTO_TEST_CASE(ClArgMinSimpleTest)
418 {
419  ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
420 }
421 
422 BOOST_AUTO_TEST_CASE(ClArgMaxAxis0Test)
423 {
424  ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
425 }
426 
427 BOOST_AUTO_TEST_CASE(ClArgMinAxis0Test)
428 {
429  ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
430 }
431 
432 BOOST_AUTO_TEST_CASE(ClArgMaxAxis1Test)
433 {
434  ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
435 }
436 
437 BOOST_AUTO_TEST_CASE(ClArgMinAxis1Test)
438 {
439  ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
440 }
441 
442 BOOST_AUTO_TEST_CASE(ClArgMaxAxis2Test)
443 {
444  ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
445 }
446 
447 BOOST_AUTO_TEST_CASE(ClArgMinAxis2Test)
448 {
449  ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
450 }
451 
452 BOOST_AUTO_TEST_CASE(ClArgMaxAxis3Test)
453 {
454  ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
455 }
456 
457 BOOST_AUTO_TEST_CASE(ClArgMinAxis3Test)
458 {
459  ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
460 }
461 
462 BOOST_AUTO_TEST_CASE(ClArgMaxSimpleTestQAsymmU8)
463 {
464  ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
465 }
466 
467 BOOST_AUTO_TEST_CASE(ClArgMinSimpleTestQAsymmU8)
468 {
469  ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
470 }
471 
472 BOOST_AUTO_TEST_CASE(ClArgMaxAxis0TestQAsymmU8)
473 {
474  ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
475 }
476 
477 BOOST_AUTO_TEST_CASE(ClArgMinAxis0TestQAsymmU8)
478 {
479  ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
480 }
481 
482 BOOST_AUTO_TEST_CASE(ClArgMaxAxis1TestQAsymmU8)
483 {
484  ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
485 }
486 
487 BOOST_AUTO_TEST_CASE(ClArgMinAxis1TestQAsymmU8)
488 {
489  ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
490 }
491 
492 BOOST_AUTO_TEST_CASE(ClArgMaxAxis2TestQAsymmU8)
493 {
494  ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
495 }
496 
497 BOOST_AUTO_TEST_CASE(ClArgMinAxis2TestQAsymmU8)
498 {
499  ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
500 }
501 
502 BOOST_AUTO_TEST_CASE(ClArgMaxAxis3TestQAsymmU8)
503 {
504  ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
505 }
506 
507 BOOST_AUTO_TEST_CASE(ClArgMinAxis3TestQAsymmU8)
508 {
509  ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
510 }
511 
512 BOOST_AUTO_TEST_CASE(ClQLstmEndToEndTest)
513 {
515 }
516 
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
void SpaceToDepthNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
void InstanceNormalizationNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
void InstanceNormalizationNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
Copyright (c) 2021 ARM Limited and Contributors.
void QLstmEndToEnd(const std::vector< armnn::BackendId > &backends)
void SpaceToDepthNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
void SpaceToDepthNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
void SpaceToDepthNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
GPU Execution: OpenCL: ArmCompute.
BOOST_AUTO_TEST_SUITE_END()
void QuantizedLstmEndToEnd(const std::vector< armnn::BackendId > &backends)
std::vector< armnn::BackendId > defaultBackends
BOOST_AUTO_TEST_CASE(ClAbsEndToEndTestFloat32)
void InstanceNormalizationNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
void InstanceNormalizationNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)