ArmNN
 20.05
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 
9 #include <Half.hpp>
10 #include <QuantizeHelper.hpp>
11 #include <ResolveType.hpp>
12 
15 
18 
19 #include <test/TensorHelpers.hpp>
20 
21 namespace
22 {
23 
24 template <std::size_t NumDims,
25  armnn::DataType ArmnnInType,
26  typename InType = armnn::ResolveType<ArmnnInType>>
27 LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
28  armnn::IWorkloadFactory & workloadFactory,
30  const armnn::ComparisonDescriptor& descriptor,
31  const armnn::TensorShape& shape0,
32  std::vector<InType> values0,
33  float quantScale0,
34  int quantOffset0,
35  const armnn::TensorShape& shape1,
36  std::vector<InType> values1,
37  float quantScale1,
38  int quantOffset1,
39  const armnn::TensorShape& outShape,
40  std::vector<uint8_t> outValues,
41  float outQuantScale,
42  int outQuantOffset)
43 {
44  IgnoreUnused(memoryManager);
45  ARMNN_ASSERT(shape0.GetNumDimensions() == NumDims);
46  armnn::TensorInfo inputTensorInfo0(shape0, ArmnnInType, quantScale0, quantOffset0);
47 
48  ARMNN_ASSERT(shape1.GetNumDimensions() == NumDims);
49  armnn::TensorInfo inputTensorInfo1(shape1, ArmnnInType, quantScale1, quantOffset1);
50 
51  ARMNN_ASSERT(outShape.GetNumDimensions() == NumDims);
52  armnn::TensorInfo outputTensorInfo(outShape, armnn::DataType::Boolean, outQuantScale, outQuantOffset);
53 
54  auto input0 = MakeTensor<InType, NumDims>(inputTensorInfo0, values0);
55  auto input1 = MakeTensor<InType, NumDims>(inputTensorInfo1, values1);
56 
57  LayerTestResult<uint8_t, NumDims> ret(outputTensorInfo);
58 
59  std::unique_ptr<armnn::ITensorHandle> inputHandle0 = workloadFactory.CreateTensorHandle(inputTensorInfo0);
60  std::unique_ptr<armnn::ITensorHandle> inputHandle1 = workloadFactory.CreateTensorHandle(inputTensorInfo1);
61  std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
62 
64  qDescriptor.m_Parameters = descriptor;
65 
67  AddInputToWorkload(qDescriptor, info, inputTensorInfo0, inputHandle0.get());
68  AddInputToWorkload(qDescriptor, info, inputTensorInfo1, inputHandle1.get());
69  AddOutputToWorkload(qDescriptor, info, outputTensorInfo, outputHandle.get());
70 
71  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateComparison(qDescriptor, info);
72 
73  inputHandle0->Allocate();
74  inputHandle1->Allocate();
75  outputHandle->Allocate();
76 
77  CopyDataToITensorHandle(inputHandle0.get(), input0.origin());
78  CopyDataToITensorHandle(inputHandle1.get(), input1.origin());
79 
80  workload->PostAllocationConfigure();
81  ExecuteWorkload(*workload, memoryManager);
82 
83  CopyDataFromITensorHandle(ret.output.origin(), outputHandle.get());
84 
85  ret.outputExpected = MakeTensor<uint8_t, NumDims>(outputTensorInfo, outValues);
86  ret.compareBoolean = true;
87 
88  return ret;
89 }
90 
91 template <std::size_t NumDims,
92  armnn::DataType ArmnnInType,
93  typename InType = armnn::ResolveType<ArmnnInType>>
94 LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
95  armnn::IWorkloadFactory & workloadFactory,
97  const armnn::ComparisonDescriptor& descriptor,
98  const armnn::TensorShape& shape0,
99  std::vector<InType> values0,
100  const armnn::TensorShape& shape1,
101  std::vector<InType> values1,
102  const armnn::TensorShape outShape,
103  std::vector<uint8_t> outValues,
104  float quantScale = 1.f,
105  int quantOffset = 0)
106 {
107  return ComparisonTestImpl<NumDims, ArmnnInType>(
108  workloadFactory,
109  memoryManager,
110  descriptor,
111  shape0,
112  values0,
113  quantScale,
114  quantOffset,
115  shape1,
116  values1,
117  quantScale,
118  quantOffset,
119  outShape,
120  outValues,
121  quantScale,
122  quantOffset);
123 }
124 
125 template<typename TestData>
126 std::vector<uint8_t> GetExpectedOutputData(const TestData& testData, armnn::ComparisonOperation operation)
127 {
128  switch (operation)
129  {
131  return testData.m_OutputEqual;
133  return testData.m_OutputGreater;
135  return testData.m_OutputGreaterOrEqual;
137  return testData.m_OutputLess;
139  return testData.m_OutputLessOrEqual;
141  default:
142  return testData.m_OutputNotEqual;
143  }
144 }
145 
146 template<armnn::DataType ArmnnInType, typename TestData>
147 LayerTestResult<uint8_t, 4> ComparisonTestImpl(armnn::IWorkloadFactory& workloadFactory,
149  const TestData& testData,
150  armnn::ComparisonOperation operation,
151  float quantScale = 1.f,
152  int quantOffset = 0)
153 {
155 
156  std::vector<T> inputData0 = armnnUtils::QuantizedVector<T>(testData.m_InputData0, quantScale, quantOffset);
157  std::vector<T> inputData1 = armnnUtils::QuantizedVector<T>(testData.m_InputData1, quantScale, quantOffset);
158 
159  return ComparisonTestImpl<4, ArmnnInType>(
160  workloadFactory,
161  memoryManager,
162  armnn::ComparisonDescriptor(operation),
163  testData.m_InputShape0,
164  inputData0,
165  testData.m_InputShape1,
166  inputData1,
167  testData.m_OutputShape,
168  GetExpectedOutputData(testData, operation),
169  quantScale,
170  quantOffset);
171 }
172 
173 class ComparisonTestData
174 {
175 public:
176  ComparisonTestData() = default;
177  virtual ~ComparisonTestData() = default;
178 
179  armnn::TensorShape m_InputShape0;
180  armnn::TensorShape m_InputShape1;
181  armnn::TensorShape m_OutputShape;
182 
183  std::vector<float> m_InputData0;
184  std::vector<float> m_InputData1;
185 
186  std::vector<uint8_t> m_OutputEqual;
187  std::vector<uint8_t> m_OutputGreater;
188  std::vector<uint8_t> m_OutputGreaterOrEqual;
189  std::vector<uint8_t> m_OutputLess;
190  std::vector<uint8_t> m_OutputLessOrEqual;
191  std::vector<uint8_t> m_OutputNotEqual;
192 };
193 
194 class SimpleTestData : public ComparisonTestData
195 {
196 public:
197  SimpleTestData() : ComparisonTestData()
198  {
199  m_InputShape0 = { 2, 2, 2, 2 };
200 
201  m_InputShape1 = m_InputShape0;
202  m_OutputShape = m_InputShape0;
203 
204  m_InputData0 =
205  {
206  1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
207  3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
208  };
209 
210  m_InputData1 =
211  {
212  1.f, 1.f, 1.f, 1.f, 3.f, 3.f, 3.f, 3.f,
213  5.f, 5.f, 5.f, 5.f, 4.f, 4.f, 4.f, 4.f
214  };
215 
216  m_OutputEqual =
217  {
218  1, 1, 1, 1, 0, 0, 0, 0,
219  0, 0, 0, 0, 1, 1, 1, 1
220  };
221 
222  m_OutputGreater =
223  {
224  0, 0, 0, 0, 1, 1, 1, 1,
225  0, 0, 0, 0, 0, 0, 0, 0
226  };
227 
228  m_OutputGreaterOrEqual =
229  {
230  1, 1, 1, 1, 1, 1, 1, 1,
231  0, 0, 0, 0, 1, 1, 1, 1
232  };
233 
234  m_OutputLess =
235  {
236  0, 0, 0, 0, 0, 0, 0, 0,
237  1, 1, 1, 1, 0, 0, 0, 0
238  };
239 
240  m_OutputLessOrEqual =
241  {
242  1, 1, 1, 1, 0, 0, 0, 0,
243  1, 1, 1, 1, 1, 1, 1, 1
244  };
245 
246  m_OutputNotEqual =
247  {
248  0, 0, 0, 0, 1, 1, 1, 1,
249  1, 1, 1, 1, 0, 0, 0, 0
250  };
251  }
252 };
253 
254 class Broadcast1ElementTestData : public ComparisonTestData
255 {
256 public:
257  Broadcast1ElementTestData() : ComparisonTestData()
258  {
259  m_InputShape0 = { 1, 2, 2, 2 };
260  m_InputShape1 = { 1, 1, 1, 1 };
261 
262  m_OutputShape = m_InputShape0;
263 
264  m_InputData0 = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f };
265  m_InputData1 = { 3.f };
266 
267  m_OutputEqual = { 0, 0, 1, 0, 0, 0, 0, 0 };
268  m_OutputGreater = { 0, 0, 0, 1, 1, 1, 1, 1 };
269  m_OutputGreaterOrEqual = { 0, 0, 1, 1, 1, 1, 1, 1 };
270  m_OutputLess = { 1, 1, 0, 0, 0, 0, 0, 0 };
271  m_OutputLessOrEqual = { 1, 1, 1, 0, 0, 0, 0, 0 };
272  m_OutputNotEqual = { 1, 1, 0, 1, 1, 1, 1, 1 };
273  }
274 };
275 
276 class Broadcast1dVectorTestData : public ComparisonTestData
277 {
278 public:
279  Broadcast1dVectorTestData() : ComparisonTestData()
280  {
281  m_InputShape0 = { 1, 2, 2, 3 };
282  m_InputShape1 = { 1, 1, 1, 3 };
283 
284  m_OutputShape = m_InputShape0;
285 
286  m_InputData0 =
287  {
288  1.f, 2.f, 3.f, 4.f, 5.f, 6.f,
289  7.f, 8.f, 9.f, 10.f, 11.f, 12.f
290  };
291 
292  m_InputData1 = { 4.f, 5.f, 6.f };
293 
294  m_OutputEqual =
295  {
296  0, 0, 0, 1, 1, 1,
297  0, 0, 0, 0, 0, 0
298  };
299 
300  m_OutputGreater =
301  {
302  0, 0, 0, 0, 0, 0,
303  1, 1, 1, 1, 1, 1
304  };
305 
306  m_OutputGreaterOrEqual =
307  {
308  0, 0, 0, 1, 1, 1,
309  1, 1, 1, 1, 1, 1
310  };
311 
312  m_OutputLess =
313  {
314  1, 1, 1, 0, 0, 0,
315  0, 0, 0, 0, 0, 0
316  };
317 
318  m_OutputLessOrEqual =
319  {
320  1, 1, 1, 1, 1, 1,
321  0, 0, 0, 0, 0, 0
322  };
323 
324  m_OutputNotEqual =
325  {
326  1, 1, 1, 0, 0, 0,
327  1, 1, 1, 1, 1, 1
328  };
329  }
330 };
331 
332 static SimpleTestData s_SimpleTestData;
333 static Broadcast1ElementTestData s_Broadcast1ElementTestData;
334 static Broadcast1dVectorTestData s_Broadcast1dVectorTestData;
335 
336 } // anonymous namespace
337 
338 // Equal
341 {
342  return ComparisonTestImpl<armnn::DataType::Float32>(
343  workloadFactory,
344  memoryManager,
345  s_SimpleTestData,
347 }
348 
350  armnn::IWorkloadFactory& workloadFactory,
352 {
353  return ComparisonTestImpl<armnn::DataType::Float32>(
354  workloadFactory,
355  memoryManager,
356  s_Broadcast1ElementTestData,
358 }
359 
361  armnn::IWorkloadFactory& workloadFactory,
363 {
364  return ComparisonTestImpl<armnn::DataType::Float32>(
365  workloadFactory,
366  memoryManager,
367  s_Broadcast1dVectorTestData,
369 }
370 
372  armnn::IWorkloadFactory& workloadFactory,
374 {
375  return ComparisonTestImpl<armnn::DataType::Float16>(
376  workloadFactory,
377  memoryManager,
378  s_SimpleTestData,
380 }
381 
383  armnn::IWorkloadFactory& workloadFactory,
385 {
386  return ComparisonTestImpl<armnn::DataType::Float16>(
387  workloadFactory,
388  memoryManager,
389  s_Broadcast1ElementTestData,
391 }
392 
394  armnn::IWorkloadFactory& workloadFactory,
396 {
397  return ComparisonTestImpl<armnn::DataType::Float16>(
398  workloadFactory,
399  memoryManager,
400  s_Broadcast1dVectorTestData,
402 }
403 
405  armnn::IWorkloadFactory& workloadFactory,
407 {
408  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
409  workloadFactory,
410  memoryManager,
411  s_SimpleTestData,
413 }
414 
416  armnn::IWorkloadFactory& workloadFactory,
418 {
419  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
420  workloadFactory,
421  memoryManager,
422  s_Broadcast1ElementTestData,
424 }
425 
427  armnn::IWorkloadFactory& workloadFactory,
429 {
430  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
431  workloadFactory,
432  memoryManager,
433  s_Broadcast1dVectorTestData,
435 }
436 
437 // Greater
440 {
441  return ComparisonTestImpl<armnn::DataType::Float32>(
442  workloadFactory,
443  memoryManager,
444  s_SimpleTestData,
446 }
447 
449  armnn::IWorkloadFactory& workloadFactory,
451 {
452  return ComparisonTestImpl<armnn::DataType::Float32>(
453  workloadFactory,
454  memoryManager,
455  s_Broadcast1ElementTestData,
457 }
458 
460  armnn::IWorkloadFactory& workloadFactory,
462 {
463  return ComparisonTestImpl<armnn::DataType::Float32>(
464  workloadFactory,
465  memoryManager,
466  s_Broadcast1dVectorTestData,
468 }
469 
471  armnn::IWorkloadFactory& workloadFactory,
473 {
474  return ComparisonTestImpl<armnn::DataType::Float16>(
475  workloadFactory,
476  memoryManager,
477  s_SimpleTestData,
479 }
480 
482  armnn::IWorkloadFactory& workloadFactory,
484 {
485  return ComparisonTestImpl<armnn::DataType::Float16>(
486  workloadFactory,
487  memoryManager,
488  s_Broadcast1ElementTestData,
490 }
491 
493  armnn::IWorkloadFactory& workloadFactory,
495 {
496  return ComparisonTestImpl<armnn::DataType::Float16>(
497  workloadFactory,
498  memoryManager,
499  s_Broadcast1dVectorTestData,
501 }
502 
504  armnn::IWorkloadFactory& workloadFactory,
506 {
507  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
508  workloadFactory,
509  memoryManager,
510  s_SimpleTestData,
512 }
513 
515  armnn::IWorkloadFactory& workloadFactory,
517 {
518  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
519  workloadFactory,
520  memoryManager,
521  s_Broadcast1ElementTestData,
523 }
524 
526  armnn::IWorkloadFactory& workloadFactory,
528 {
529  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
530  workloadFactory,
531  memoryManager,
532  s_Broadcast1dVectorTestData,
534 }
535 
536 // GreaterOrEqual
538  armnn::IWorkloadFactory& workloadFactory,
540 {
541  return ComparisonTestImpl<armnn::DataType::Float32>(
542  workloadFactory,
543  memoryManager,
544  s_SimpleTestData,
546 }
547 
549  armnn::IWorkloadFactory& workloadFactory,
551 {
552  return ComparisonTestImpl<armnn::DataType::Float32>(
553  workloadFactory,
554  memoryManager,
555  s_Broadcast1ElementTestData,
557 }
558 
560  armnn::IWorkloadFactory& workloadFactory,
562 {
563  return ComparisonTestImpl<armnn::DataType::Float32>(
564  workloadFactory,
565  memoryManager,
566  s_Broadcast1dVectorTestData,
568 }
569 
571  armnn::IWorkloadFactory& workloadFactory,
573 {
574  return ComparisonTestImpl<armnn::DataType::Float16>(
575  workloadFactory,
576  memoryManager,
577  s_SimpleTestData,
579 }
580 
582  armnn::IWorkloadFactory& workloadFactory,
584 {
585  return ComparisonTestImpl<armnn::DataType::Float16>(
586  workloadFactory,
587  memoryManager,
588  s_Broadcast1ElementTestData,
590 }
591 
593  armnn::IWorkloadFactory& workloadFactory,
595 {
596  return ComparisonTestImpl<armnn::DataType::Float16>(
597  workloadFactory,
598  memoryManager,
599  s_Broadcast1dVectorTestData,
601 }
602 
604  armnn::IWorkloadFactory& workloadFactory,
606 {
607  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
608  workloadFactory,
609  memoryManager,
610  s_SimpleTestData,
612 }
613 
615  armnn::IWorkloadFactory& workloadFactory,
617 {
618  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
619  workloadFactory,
620  memoryManager,
621  s_Broadcast1ElementTestData,
623 }
624 
626  armnn::IWorkloadFactory& workloadFactory,
628 {
629  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
630  workloadFactory,
631  memoryManager,
632  s_Broadcast1dVectorTestData,
634 }
635 
636 // Less
639 {
640  return ComparisonTestImpl<armnn::DataType::Float32>(
641  workloadFactory,
642  memoryManager,
643  s_SimpleTestData,
645 }
646 
648  armnn::IWorkloadFactory& workloadFactory,
650 {
651  return ComparisonTestImpl<armnn::DataType::Float32>(
652  workloadFactory,
653  memoryManager,
654  s_Broadcast1ElementTestData,
656 }
657 
659  armnn::IWorkloadFactory& workloadFactory,
661 {
662  return ComparisonTestImpl<armnn::DataType::Float32>(
663  workloadFactory,
664  memoryManager,
665  s_Broadcast1dVectorTestData,
667 }
668 
670  armnn::IWorkloadFactory& workloadFactory,
672 {
673  return ComparisonTestImpl<armnn::DataType::Float16>(
674  workloadFactory,
675  memoryManager,
676  s_SimpleTestData,
678 }
679 
681  armnn::IWorkloadFactory& workloadFactory,
683 {
684  return ComparisonTestImpl<armnn::DataType::Float16>(
685  workloadFactory,
686  memoryManager,
687  s_Broadcast1ElementTestData,
689 }
690 
692  armnn::IWorkloadFactory& workloadFactory,
694 {
695  return ComparisonTestImpl<armnn::DataType::Float16>(
696  workloadFactory,
697  memoryManager,
698  s_Broadcast1dVectorTestData,
700 }
701 
703  armnn::IWorkloadFactory& workloadFactory,
705 {
706  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
707  workloadFactory,
708  memoryManager,
709  s_SimpleTestData,
711 }
712 
714  armnn::IWorkloadFactory& workloadFactory,
716 {
717  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
718  workloadFactory,
719  memoryManager,
720  s_Broadcast1ElementTestData,
722 }
723 
725  armnn::IWorkloadFactory& workloadFactory,
727 {
728  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
729  workloadFactory,
730  memoryManager,
731  s_Broadcast1dVectorTestData,
733 }
734 
735 // LessOrEqual
737  armnn::IWorkloadFactory& workloadFactory,
739 {
740  return ComparisonTestImpl<armnn::DataType::Float32>(
741  workloadFactory,
742  memoryManager,
743  s_SimpleTestData,
745 }
746 
748  armnn::IWorkloadFactory& workloadFactory,
750 {
751  return ComparisonTestImpl<armnn::DataType::Float32>(
752  workloadFactory,
753  memoryManager,
754  s_Broadcast1ElementTestData,
756 }
757 
759  armnn::IWorkloadFactory& workloadFactory,
761 {
762  return ComparisonTestImpl<armnn::DataType::Float32>(
763  workloadFactory,
764  memoryManager,
765  s_Broadcast1dVectorTestData,
767 }
768 
770  armnn::IWorkloadFactory& workloadFactory,
772 {
773  return ComparisonTestImpl<armnn::DataType::Float16>(
774  workloadFactory,
775  memoryManager,
776  s_SimpleTestData,
778 }
779 
781  armnn::IWorkloadFactory& workloadFactory,
783 {
784  return ComparisonTestImpl<armnn::DataType::Float16>(
785  workloadFactory,
786  memoryManager,
787  s_Broadcast1ElementTestData,
789 }
790 
792  armnn::IWorkloadFactory& workloadFactory,
794 {
795  return ComparisonTestImpl<armnn::DataType::Float16>(
796  workloadFactory,
797  memoryManager,
798  s_Broadcast1dVectorTestData,
800 }
801 
803  armnn::IWorkloadFactory& workloadFactory,
805 {
806  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
807  workloadFactory,
808  memoryManager,
809  s_SimpleTestData,
811 }
812 
814  armnn::IWorkloadFactory& workloadFactory,
816 {
817  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
818  workloadFactory,
819  memoryManager,
820  s_Broadcast1ElementTestData,
822 }
823 
825  armnn::IWorkloadFactory& workloadFactory,
827 {
828  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
829  workloadFactory,
830  memoryManager,
831  s_Broadcast1dVectorTestData,
833 }
834 
835 // NotEqual
837  armnn::IWorkloadFactory& workloadFactory,
839 {
840  return ComparisonTestImpl<armnn::DataType::Float32>(
841  workloadFactory,
842  memoryManager,
843  s_SimpleTestData,
845 }
846 
848  armnn::IWorkloadFactory& workloadFactory,
850 {
851  return ComparisonTestImpl<armnn::DataType::Float32>(
852  workloadFactory,
853  memoryManager,
854  s_Broadcast1ElementTestData,
856 }
857 
859  armnn::IWorkloadFactory& workloadFactory,
861 {
862  return ComparisonTestImpl<armnn::DataType::Float32>(
863  workloadFactory,
864  memoryManager,
865  s_Broadcast1dVectorTestData,
867 }
868 
870  armnn::IWorkloadFactory& workloadFactory,
872 {
873  return ComparisonTestImpl<armnn::DataType::Float16>(
874  workloadFactory,
875  memoryManager,
876  s_SimpleTestData,
878 }
879 
881  armnn::IWorkloadFactory& workloadFactory,
883 {
884  return ComparisonTestImpl<armnn::DataType::Float16>(
885  workloadFactory,
886  memoryManager,
887  s_Broadcast1ElementTestData,
889 }
890 
892  armnn::IWorkloadFactory& workloadFactory,
894 {
895  return ComparisonTestImpl<armnn::DataType::Float16>(
896  workloadFactory,
897  memoryManager,
898  s_Broadcast1dVectorTestData,
900 }
901 
903  armnn::IWorkloadFactory& workloadFactory,
905 {
906  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
907  workloadFactory,
908  memoryManager,
909  s_SimpleTestData,
911 }
912 
914  armnn::IWorkloadFactory& workloadFactory,
916 {
917  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
918  workloadFactory,
919  memoryManager,
920  s_Broadcast1ElementTestData,
922 }
923 
925  armnn::IWorkloadFactory& workloadFactory,
927 {
928  return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
929  workloadFactory,
930  memoryManager,
931  s_Broadcast1dVectorTestData,
933 }
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:70
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)
#define ARMNN_ASSERT(COND)
Definition: Assert.hpp:14
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)