ArmNN
 20.02
ComparisonTestImpl.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2019 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "ComparisonTestImpl.hpp"
7 
8 
9 #include <Half.hpp>
10 #include <QuantizeHelper.hpp>
11 #include <ResolveType.hpp>
12 
15 
18 
19 #include <test/TensorHelpers.hpp>
20 
21 #include <boost/assert.hpp>
22 
23 namespace
24 {
25 
26 template <std::size_t NumDims,
27  armnn::DataType ArmnnInType,
28  typename InType = armnn::ResolveType<ArmnnInType>>
29 LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
30  armnn::IWorkloadFactory & workloadFactory,
32  const armnn::ComparisonDescriptor& descriptor,
33  const armnn::TensorShape& shape0,
34  std::vector<InType> values0,
35  float quantScale0,
36  int quantOffset0,
37  const armnn::TensorShape& shape1,
38  std::vector<InType> values1,
39  float quantScale1,
40  int quantOffset1,
41  const armnn::TensorShape& outShape,
42  std::vector<uint8_t> outValues,
43  float outQuantScale,
44  int outQuantOffset)
45 {
46  IgnoreUnused(memoryManager);
47  BOOST_ASSERT(shape0.GetNumDimensions() == NumDims);
48  armnn::TensorInfo inputTensorInfo0(shape0, ArmnnInType, quantScale0, quantOffset0);
49 
50  BOOST_ASSERT(shape1.GetNumDimensions() == NumDims);
51  armnn::TensorInfo inputTensorInfo1(shape1, ArmnnInType, quantScale1, quantOffset1);
52 
53  BOOST_ASSERT(outShape.GetNumDimensions() == NumDims);
54  armnn::TensorInfo outputTensorInfo(outShape, armnn::DataType::Boolean, outQuantScale, outQuantOffset);
55 
56  auto input0 = MakeTensor<InType, NumDims>(inputTensorInfo0, values0);
57  auto input1 = MakeTensor<InType, NumDims>(inputTensorInfo1, values1);
58 
59  LayerTestResult<uint8_t, NumDims> ret(outputTensorInfo);
60 
61  std::unique_ptr<armnn::ITensorHandle> inputHandle0 = workloadFactory.CreateTensorHandle(inputTensorInfo0);
62  std::unique_ptr<armnn::ITensorHandle> inputHandle1 = workloadFactory.CreateTensorHandle(inputTensorInfo1);
63  std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
64 
66  qDescriptor.m_Parameters = descriptor;
67 
69  AddInputToWorkload(qDescriptor, info, inputTensorInfo0, inputHandle0.get());
70  AddInputToWorkload(qDescriptor, info, inputTensorInfo1, inputHandle1.get());
71  AddOutputToWorkload(qDescriptor, info, outputTensorInfo, outputHandle.get());
72 
73  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateComparison(qDescriptor, info);
74 
75  inputHandle0->Allocate();
76  inputHandle1->Allocate();
77  outputHandle->Allocate();
78 
79  CopyDataToITensorHandle(inputHandle0.get(), input0.origin());
80  CopyDataToITensorHandle(inputHandle1.get(), input1.origin());
81 
82  workload->PostAllocationConfigure();
83  ExecuteWorkload(*workload, memoryManager);
84 
85  CopyDataFromITensorHandle(ret.output.origin(), outputHandle.get());
86 
87  ret.outputExpected = MakeTensor<uint8_t, NumDims>(outputTensorInfo, outValues);
88  ret.compareBoolean = true;
89 
90  return ret;
91 }
92 
93 template <std::size_t NumDims,
94  armnn::DataType ArmnnInType,
95  typename InType = armnn::ResolveType<ArmnnInType>>
96 LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
97  armnn::IWorkloadFactory & workloadFactory,
99  const armnn::ComparisonDescriptor& descriptor,
100  const armnn::TensorShape& shape0,
101  std::vector<InType> values0,
102  const armnn::TensorShape& shape1,
103  std::vector<InType> values1,
104  const armnn::TensorShape outShape,
105  std::vector<uint8_t> outValues,
106  float quantScale = 1.f,
107  int quantOffset = 0)
108 {
109  return ComparisonTestImpl<NumDims, ArmnnInType>(
110  workloadFactory,
111  memoryManager,
112  descriptor,
113  shape0,
114  values0,
115  quantScale,
116  quantOffset,
117  shape1,
118  values1,
119  quantScale,
120  quantOffset,
121  outShape,
122  outValues,
123  quantScale,
124  quantOffset);
125 }
126 
127 template<typename TestData>
128 std::vector<uint8_t> GetExpectedOutputData(const TestData& testData, armnn::ComparisonOperation operation)
129 {
130  switch (operation)
131  {
133  return testData.m_OutputEqual;
135  return testData.m_OutputGreater;
137  return testData.m_OutputGreaterOrEqual;
139  return testData.m_OutputLess;
141  return testData.m_OutputLessOrEqual;
143  default:
144  return testData.m_OutputNotEqual;
145  }
146 }
147 
148 template<armnn::DataType ArmnnInType, typename TestData>
149 LayerTestResult<uint8_t, 4> ComparisonTestImpl(armnn::IWorkloadFactory& workloadFactory,
151  const TestData& testData,
152  armnn::ComparisonOperation operation,
153  float quantScale = 1.f,
154  int quantOffset = 0)
155 {
157 
158  std::vector<T> inputData0 = armnnUtils::QuantizedVector<T>(testData.m_InputData0, quantScale, quantOffset);
159  std::vector<T> inputData1 = armnnUtils::QuantizedVector<T>(testData.m_InputData1, quantScale, quantOffset);
160 
161  return ComparisonTestImpl<4, ArmnnInType>(
162  workloadFactory,
163  memoryManager,
164  armnn::ComparisonDescriptor(operation),
165  testData.m_InputShape0,
166  inputData0,
167  testData.m_InputShape1,
168  inputData1,
169  testData.m_OutputShape,
170  GetExpectedOutputData(testData, operation),
171  quantScale,
172  quantOffset);
173 }
174 
175 class ComparisonTestData
176 {
177 public:
178  ComparisonTestData() = default;
179  virtual ~ComparisonTestData() = default;
180 
181  armnn::TensorShape m_InputShape0;
182  armnn::TensorShape m_InputShape1;
183  armnn::TensorShape m_OutputShape;
184 
185  std::vector<float> m_InputData0;
186  std::vector<float> m_InputData1;
187 
188  std::vector<uint8_t> m_OutputEqual;
189  std::vector<uint8_t> m_OutputGreater;
190  std::vector<uint8_t> m_OutputGreaterOrEqual;
191  std::vector<uint8_t> m_OutputLess;
192  std::vector<uint8_t> m_OutputLessOrEqual;
193  std::vector<uint8_t> m_OutputNotEqual;
194 };
195 
196 class SimpleTestData : public ComparisonTestData
197 {
198 public:
199  SimpleTestData() : ComparisonTestData()
200  {
201  m_InputShape0 = { 2, 2, 2, 2 };
202 
203  m_InputShape1 = m_InputShape0;
204  m_OutputShape = m_InputShape0;
205 
206  m_InputData0 =
207  {
208  1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
209  3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
210  };
211 
212  m_InputData1 =
213  {
214  1.f, 1.f, 1.f, 1.f, 3.f, 3.f, 3.f, 3.f,
215  5.f, 5.f, 5.f, 5.f, 4.f, 4.f, 4.f, 4.f
216  };
217 
218  m_OutputEqual =
219  {
220  1, 1, 1, 1, 0, 0, 0, 0,
221  0, 0, 0, 0, 1, 1, 1, 1
222  };
223 
224  m_OutputGreater =
225  {
226  0, 0, 0, 0, 1, 1, 1, 1,
227  0, 0, 0, 0, 0, 0, 0, 0
228  };
229 
230  m_OutputGreaterOrEqual =
231  {
232  1, 1, 1, 1, 1, 1, 1, 1,
233  0, 0, 0, 0, 1, 1, 1, 1
234  };
235 
236  m_OutputLess =
237  {
238  0, 0, 0, 0, 0, 0, 0, 0,
239  1, 1, 1, 1, 0, 0, 0, 0
240  };
241 
242  m_OutputLessOrEqual =
243  {
244  1, 1, 1, 1, 0, 0, 0, 0,
245  1, 1, 1, 1, 1, 1, 1, 1
246  };
247 
248  m_OutputNotEqual =
249  {
250  0, 0, 0, 0, 1, 1, 1, 1,
251  1, 1, 1, 1, 0, 0, 0, 0
252  };
253  }
254 };
255 
256 class Broadcast1ElementTestData : public ComparisonTestData
257 {
258 public:
259  Broadcast1ElementTestData() : ComparisonTestData()
260  {
261  m_InputShape0 = { 1, 2, 2, 2 };
262  m_InputShape1 = { 1, 1, 1, 1 };
263 
264  m_OutputShape = m_InputShape0;
265 
266  m_InputData0 = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f };
267  m_InputData1 = { 3.f };
268 
269  m_OutputEqual = { 0, 0, 1, 0, 0, 0, 0, 0 };
270  m_OutputGreater = { 0, 0, 0, 1, 1, 1, 1, 1 };
271  m_OutputGreaterOrEqual = { 0, 0, 1, 1, 1, 1, 1, 1 };
272  m_OutputLess = { 1, 1, 0, 0, 0, 0, 0, 0 };
273  m_OutputLessOrEqual = { 1, 1, 1, 0, 0, 0, 0, 0 };
274  m_OutputNotEqual = { 1, 1, 0, 1, 1, 1, 1, 1 };
275  }
276 };
277 
278 class Broadcast1dVectorTestData : public ComparisonTestData
279 {
280 public:
281  Broadcast1dVectorTestData() : ComparisonTestData()
282  {
283  m_InputShape0 = { 1, 2, 2, 3 };
284  m_InputShape1 = { 1, 1, 1, 3 };
285 
286  m_OutputShape = m_InputShape0;
287 
288  m_InputData0 =
289  {
290  1.f, 2.f, 3.f, 4.f, 5.f, 6.f,
291  7.f, 8.f, 9.f, 10.f, 11.f, 12.f
292  };
293 
294  m_InputData1 = { 4.f, 5.f, 6.f };
295 
296  m_OutputEqual =
297  {
298  0, 0, 0, 1, 1, 1,
299  0, 0, 0, 0, 0, 0
300  };
301 
302  m_OutputGreater =
303  {
304  0, 0, 0, 0, 0, 0,
305  1, 1, 1, 1, 1, 1
306  };
307 
308  m_OutputGreaterOrEqual =
309  {
310  0, 0, 0, 1, 1, 1,
311  1, 1, 1, 1, 1, 1
312  };
313 
314  m_OutputLess =
315  {
316  1, 1, 1, 0, 0, 0,
317  0, 0, 0, 0, 0, 0
318  };
319 
320  m_OutputLessOrEqual =
321  {
322  1, 1, 1, 1, 1, 1,
323  0, 0, 0, 0, 0, 0
324  };
325 
326  m_OutputNotEqual =
327  {
328  1, 1, 1, 0, 0, 0,
329  1, 1, 1, 1, 1, 1
330  };
331  }
332 };
333 
334 static SimpleTestData s_SimpleTestData;
335 static Broadcast1ElementTestData s_Broadcast1ElementTestData;
336 static Broadcast1dVectorTestData s_Broadcast1dVectorTestData;
337 
338 } // anonymous namespace
339 
340 // Equal
343 {
344  return ComparisonTestImpl<armnn::DataType::Float32>(
345  workloadFactory,
346  memoryManager,
347  s_SimpleTestData,
349 }
350 
352  armnn::IWorkloadFactory& workloadFactory,
354 {
355  return ComparisonTestImpl<armnn::DataType::Float32>(
356  workloadFactory,
357  memoryManager,
358  s_Broadcast1ElementTestData,
360 }
361 
363  armnn::IWorkloadFactory& workloadFactory,
365 {
366  return ComparisonTestImpl<armnn::DataType::Float32>(
367  workloadFactory,
368  memoryManager,
369  s_Broadcast1dVectorTestData,
371 }
372 
374  armnn::IWorkloadFactory& workloadFactory,
376 {
377  return ComparisonTestImpl<armnn::DataType::Float16>(
378  workloadFactory,
379  memoryManager,
380  s_SimpleTestData,
382 }
383 
385  armnn::IWorkloadFactory& workloadFactory,
387 {
388  return ComparisonTestImpl<armnn::DataType::Float16>(
389  workloadFactory,
390  memoryManager,
391  s_Broadcast1ElementTestData,
393 }
394 
396  armnn::IWorkloadFactory& workloadFactory,
398 {
399  return ComparisonTestImpl<armnn::DataType::Float16>(
400  workloadFactory,
401  memoryManager,
402  s_Broadcast1dVectorTestData,
404 }
405 
407  armnn::IWorkloadFactory& workloadFactory,
409 {
410  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
411  workloadFactory,
412  memoryManager,
413  s_SimpleTestData,
415 }
416 
418  armnn::IWorkloadFactory& workloadFactory,
420 {
421  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
422  workloadFactory,
423  memoryManager,
424  s_Broadcast1ElementTestData,
426 }
427 
429  armnn::IWorkloadFactory& workloadFactory,
431 {
432  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
433  workloadFactory,
434  memoryManager,
435  s_Broadcast1dVectorTestData,
437 }
438 
439 // Greater
442 {
443  return ComparisonTestImpl<armnn::DataType::Float32>(
444  workloadFactory,
445  memoryManager,
446  s_SimpleTestData,
448 }
449 
451  armnn::IWorkloadFactory& workloadFactory,
453 {
454  return ComparisonTestImpl<armnn::DataType::Float32>(
455  workloadFactory,
456  memoryManager,
457  s_Broadcast1ElementTestData,
459 }
460 
462  armnn::IWorkloadFactory& workloadFactory,
464 {
465  return ComparisonTestImpl<armnn::DataType::Float32>(
466  workloadFactory,
467  memoryManager,
468  s_Broadcast1dVectorTestData,
470 }
471 
473  armnn::IWorkloadFactory& workloadFactory,
475 {
476  return ComparisonTestImpl<armnn::DataType::Float16>(
477  workloadFactory,
478  memoryManager,
479  s_SimpleTestData,
481 }
482 
484  armnn::IWorkloadFactory& workloadFactory,
486 {
487  return ComparisonTestImpl<armnn::DataType::Float16>(
488  workloadFactory,
489  memoryManager,
490  s_Broadcast1ElementTestData,
492 }
493 
495  armnn::IWorkloadFactory& workloadFactory,
497 {
498  return ComparisonTestImpl<armnn::DataType::Float16>(
499  workloadFactory,
500  memoryManager,
501  s_Broadcast1dVectorTestData,
503 }
504 
506  armnn::IWorkloadFactory& workloadFactory,
508 {
509  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
510  workloadFactory,
511  memoryManager,
512  s_SimpleTestData,
514 }
515 
517  armnn::IWorkloadFactory& workloadFactory,
519 {
520  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
521  workloadFactory,
522  memoryManager,
523  s_Broadcast1ElementTestData,
525 }
526 
528  armnn::IWorkloadFactory& workloadFactory,
530 {
531  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
532  workloadFactory,
533  memoryManager,
534  s_Broadcast1dVectorTestData,
536 }
537 
538 // GreaterOrEqual
540  armnn::IWorkloadFactory& workloadFactory,
542 {
543  return ComparisonTestImpl<armnn::DataType::Float32>(
544  workloadFactory,
545  memoryManager,
546  s_SimpleTestData,
548 }
549 
551  armnn::IWorkloadFactory& workloadFactory,
553 {
554  return ComparisonTestImpl<armnn::DataType::Float32>(
555  workloadFactory,
556  memoryManager,
557  s_Broadcast1ElementTestData,
559 }
560 
562  armnn::IWorkloadFactory& workloadFactory,
564 {
565  return ComparisonTestImpl<armnn::DataType::Float32>(
566  workloadFactory,
567  memoryManager,
568  s_Broadcast1dVectorTestData,
570 }
571 
573  armnn::IWorkloadFactory& workloadFactory,
575 {
576  return ComparisonTestImpl<armnn::DataType::Float16>(
577  workloadFactory,
578  memoryManager,
579  s_SimpleTestData,
581 }
582 
584  armnn::IWorkloadFactory& workloadFactory,
586 {
587  return ComparisonTestImpl<armnn::DataType::Float16>(
588  workloadFactory,
589  memoryManager,
590  s_Broadcast1ElementTestData,
592 }
593 
595  armnn::IWorkloadFactory& workloadFactory,
597 {
598  return ComparisonTestImpl<armnn::DataType::Float16>(
599  workloadFactory,
600  memoryManager,
601  s_Broadcast1dVectorTestData,
603 }
604 
606  armnn::IWorkloadFactory& workloadFactory,
608 {
609  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
610  workloadFactory,
611  memoryManager,
612  s_SimpleTestData,
614 }
615 
617  armnn::IWorkloadFactory& workloadFactory,
619 {
620  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
621  workloadFactory,
622  memoryManager,
623  s_Broadcast1ElementTestData,
625 }
626 
628  armnn::IWorkloadFactory& workloadFactory,
630 {
631  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
632  workloadFactory,
633  memoryManager,
634  s_Broadcast1dVectorTestData,
636 }
637 
638 // Less
641 {
642  return ComparisonTestImpl<armnn::DataType::Float32>(
643  workloadFactory,
644  memoryManager,
645  s_SimpleTestData,
647 }
648 
650  armnn::IWorkloadFactory& workloadFactory,
652 {
653  return ComparisonTestImpl<armnn::DataType::Float32>(
654  workloadFactory,
655  memoryManager,
656  s_Broadcast1ElementTestData,
658 }
659 
661  armnn::IWorkloadFactory& workloadFactory,
663 {
664  return ComparisonTestImpl<armnn::DataType::Float32>(
665  workloadFactory,
666  memoryManager,
667  s_Broadcast1dVectorTestData,
669 }
670 
672  armnn::IWorkloadFactory& workloadFactory,
674 {
675  return ComparisonTestImpl<armnn::DataType::Float16>(
676  workloadFactory,
677  memoryManager,
678  s_SimpleTestData,
680 }
681 
683  armnn::IWorkloadFactory& workloadFactory,
685 {
686  return ComparisonTestImpl<armnn::DataType::Float16>(
687  workloadFactory,
688  memoryManager,
689  s_Broadcast1ElementTestData,
691 }
692 
694  armnn::IWorkloadFactory& workloadFactory,
696 {
697  return ComparisonTestImpl<armnn::DataType::Float16>(
698  workloadFactory,
699  memoryManager,
700  s_Broadcast1dVectorTestData,
702 }
703 
705  armnn::IWorkloadFactory& workloadFactory,
707 {
708  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
709  workloadFactory,
710  memoryManager,
711  s_SimpleTestData,
713 }
714 
716  armnn::IWorkloadFactory& workloadFactory,
718 {
719  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
720  workloadFactory,
721  memoryManager,
722  s_Broadcast1ElementTestData,
724 }
725 
727  armnn::IWorkloadFactory& workloadFactory,
729 {
730  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
731  workloadFactory,
732  memoryManager,
733  s_Broadcast1dVectorTestData,
735 }
736 
737 // LessOrEqual
739  armnn::IWorkloadFactory& workloadFactory,
741 {
742  return ComparisonTestImpl<armnn::DataType::Float32>(
743  workloadFactory,
744  memoryManager,
745  s_SimpleTestData,
747 }
748 
750  armnn::IWorkloadFactory& workloadFactory,
752 {
753  return ComparisonTestImpl<armnn::DataType::Float32>(
754  workloadFactory,
755  memoryManager,
756  s_Broadcast1ElementTestData,
758 }
759 
761  armnn::IWorkloadFactory& workloadFactory,
763 {
764  return ComparisonTestImpl<armnn::DataType::Float32>(
765  workloadFactory,
766  memoryManager,
767  s_Broadcast1dVectorTestData,
769 }
770 
772  armnn::IWorkloadFactory& workloadFactory,
774 {
775  return ComparisonTestImpl<armnn::DataType::Float16>(
776  workloadFactory,
777  memoryManager,
778  s_SimpleTestData,
780 }
781 
783  armnn::IWorkloadFactory& workloadFactory,
785 {
786  return ComparisonTestImpl<armnn::DataType::Float16>(
787  workloadFactory,
788  memoryManager,
789  s_Broadcast1ElementTestData,
791 }
792 
794  armnn::IWorkloadFactory& workloadFactory,
796 {
797  return ComparisonTestImpl<armnn::DataType::Float16>(
798  workloadFactory,
799  memoryManager,
800  s_Broadcast1dVectorTestData,
802 }
803 
805  armnn::IWorkloadFactory& workloadFactory,
807 {
808  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
809  workloadFactory,
810  memoryManager,
811  s_SimpleTestData,
813 }
814 
816  armnn::IWorkloadFactory& workloadFactory,
818 {
819  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
820  workloadFactory,
821  memoryManager,
822  s_Broadcast1ElementTestData,
824 }
825 
827  armnn::IWorkloadFactory& workloadFactory,
829 {
830  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
831  workloadFactory,
832  memoryManager,
833  s_Broadcast1dVectorTestData,
835 }
836 
837 // NotEqual
839  armnn::IWorkloadFactory& workloadFactory,
841 {
842  return ComparisonTestImpl<armnn::DataType::Float32>(
843  workloadFactory,
844  memoryManager,
845  s_SimpleTestData,
847 }
848 
850  armnn::IWorkloadFactory& workloadFactory,
852 {
853  return ComparisonTestImpl<armnn::DataType::Float32>(
854  workloadFactory,
855  memoryManager,
856  s_Broadcast1ElementTestData,
858 }
859 
861  armnn::IWorkloadFactory& workloadFactory,
863 {
864  return ComparisonTestImpl<armnn::DataType::Float32>(
865  workloadFactory,
866  memoryManager,
867  s_Broadcast1dVectorTestData,
869 }
870 
872  armnn::IWorkloadFactory& workloadFactory,
874 {
875  return ComparisonTestImpl<armnn::DataType::Float16>(
876  workloadFactory,
877  memoryManager,
878  s_SimpleTestData,
880 }
881 
883  armnn::IWorkloadFactory& workloadFactory,
885 {
886  return ComparisonTestImpl<armnn::DataType::Float16>(
887  workloadFactory,
888  memoryManager,
889  s_Broadcast1ElementTestData,
891 }
892 
894  armnn::IWorkloadFactory& workloadFactory,
896 {
897  return ComparisonTestImpl<armnn::DataType::Float16>(
898  workloadFactory,
899  memoryManager,
900  s_Broadcast1dVectorTestData,
902 }
903 
905  armnn::IWorkloadFactory& workloadFactory,
907 {
908  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
909  workloadFactory,
910  memoryManager,
911  s_SimpleTestData,
913 }
914 
916  armnn::IWorkloadFactory& workloadFactory,
918 {
919  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
920  workloadFactory,
921  memoryManager,
922  s_Broadcast1ElementTestData,
924 }
925 
927  armnn::IWorkloadFactory& workloadFactory,
929 {
930  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
931  workloadFactory,
932  memoryManager,
933  s_Broadcast1dVectorTestData,
935 }
LayerTestResult< uint8_t, 4 > LessBroadcast1dVectorTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessOrEqualSimpleUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > NotEqualBroadcast1ElementUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > EqualBroadcast1ElementTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
A ComparisonDescriptor for the ComparisonLayer.
Definition: Descriptors.hpp:62
LayerTestResult< uint8_t, 4 > EqualBroadcast1ElementFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterOrEqualBroadcast1ElementUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterBroadcast1dVectorTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterSimpleFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessOrEqualBroadcast1ElementUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessBroadcast1dVectorUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterSimpleUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessOrEqualSimpleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > NotEqualBroadcast1ElementTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > NotEqualBroadcast1ElementFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
typename ResolveTypeImpl< DT >::Type ResolveType
Definition: ResolveType.hpp:73
LayerTestResult< uint8_t, 4 > LessBroadcast1ElementTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessOrEqualSimpleFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterBroadcast1dVectorUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > NotEqualSimpleUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessBroadcast1ElementFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void IgnoreUnused(Ts &&...)
LayerTestResult< uint8_t, 4 > LessBroadcast1ElementUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > EqualBroadcast1ElementUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessOrEqualBroadcast1dVectorTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > EqualBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessSimpleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
ComparisonOperation
Definition: Types.hpp:77
DataType
Definition: Types.hpp:32
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< uint8_t, 4 > LessBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > NotEqualBroadcast1dVectorTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessOrEqualBroadcast1ElementTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > EqualBroadcast1dVectorUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterBroadcast1ElementUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessSimpleUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessSimpleFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > EqualSimpleUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessOrEqualBroadcast1ElementFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > EqualSimpleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
LayerTestResult< uint8_t, 4 > GreaterBroadcast1ElementFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
LayerTestResult< uint8_t, 4 > GreaterOrEqualBroadcast1dVectorUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
virtual std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &Info) const
LayerTestResult< uint8_t, 4 > LessOrEqualBroadcast1dVectorUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterBroadcast1ElementTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterOrEqualBroadcast1dVectorTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterOrEqualSimpleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
unsigned int GetNumDimensions() const
Definition: Tensor.hpp:43
LayerTestResult< uint8_t, 4 > NotEqualSimpleFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > EqualSimpleFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterSimpleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterOrEqualSimpleUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > NotEqualSimpleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
Contains information about inputs and outputs to a layer.
LayerTestResult< uint8_t, 4 > GreaterOrEqualBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterOrEqualBroadcast1ElementFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterOrEqualSimpleFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > NotEqualBroadcast1dVectorUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > NotEqualBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > GreaterOrEqualBroadcast1ElementTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
LayerTestResult< uint8_t, 4 > EqualBroadcast1dVectorTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > LessOrEqualBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)