ArmNN
 21.11
AbsTestImpl.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "AbsTestImpl.hpp"
8 
9 
10 template<armnn::DataType ArmnnType, typename T>
12  armnn::IWorkloadFactory& workloadFactory,
14  const armnn::ITensorHandleFactory& tensorHandleFactory)
15 {
16  const unsigned int inputShape[] = { 2, 2 };
17 
18  std::vector<float> inputValues
19  {
20  -0.1f, 0.2f,
21  0.3f, -0.4f
22  };
23 
24  // Calculate output values for input.
25  auto f = [](float value)
26  {
27  return std::abs(value);
28  };
29  std::vector<float> expectedOutputValues(inputValues.size());
30  std::transform(inputValues.begin(), inputValues.end(), expectedOutputValues.begin(), f);
31 
32  return ElementwiseUnaryTestHelper<2, ArmnnType>(
33  workloadFactory,
34  memoryManager,
36  inputShape,
37  inputValues,
38  inputShape,
39  expectedOutputValues,
40  tensorHandleFactory);
41 }
42 
43 template<armnn::DataType ArmnnType, typename T>
45  armnn::IWorkloadFactory& workloadFactory,
47  const armnn::ITensorHandleFactory& tensorHandleFactory)
48 {
49  const unsigned int inputShape[] = { 3, 1, 2 };
50 
51  std::vector<float> inputValues
52  {
53  -0.1f, -0.2f, -0.3f,
54  0.1f, 0.2f, 0.3f
55  };
56 
57  auto f = [](float value)
58  {
59  return std::abs(value);
60  };
61  std::vector<float>expectedOutputValues(inputValues.size());
62  std::transform(inputValues.begin(), inputValues.end(), expectedOutputValues.begin(), f);
63 
64  return ElementwiseUnaryTestHelper<3, ArmnnType>(
65  workloadFactory,
66  memoryManager,
68  inputShape,
69  inputValues,
70  inputShape,
71  expectedOutputValues,
72  tensorHandleFactory);
73 }
74 
75 template<armnn::DataType ArmnnType, typename T>
77  armnn::IWorkloadFactory& workloadFactory,
79  const armnn::ITensorHandleFactory& tensorHandleFactory)
80 {
81  const unsigned int inputShape[] = { 1, 2 };
82 
83  std::vector<float> inputValues
84  {
85  0.f, -0.f
86  };
87 
88  std::vector<float> expectedOutputValues
89  {
90  0.f, 0.f
91  };
92 
93  return ElementwiseUnaryTestHelper<2, ArmnnType>(
94  workloadFactory,
95  memoryManager,
97  inputShape,
98  inputValues,
99  inputShape,
100  expectedOutputValues,
101  tensorHandleFactory);
102 }
103 
104 //
105 // Explicit template specializations
106 //
107 
109 Abs2dTest<armnn::DataType::Float32>(
110  armnn::IWorkloadFactory& workloadFactory,
112  const armnn::ITensorHandleFactory& tensorHandleFactory);
113 
115 Abs2dTest<armnn::DataType::Float16>(
116  armnn::IWorkloadFactory& workloadFactory,
118  const armnn::ITensorHandleFactory& tensorHandleFactory);
119 
121 Abs2dTest<armnn::DataType::Signed32>(
122  armnn::IWorkloadFactory& workloadFactory,
124  const armnn::ITensorHandleFactory& tensorHandleFactory);
125 
127 Abs2dTest<armnn::DataType::QAsymmS8>(
128  armnn::IWorkloadFactory& workloadFactory,
130  const armnn::ITensorHandleFactory& tensorHandleFactory);
131 
133 Abs2dTest<armnn::DataType::QAsymmU8>(
134  armnn::IWorkloadFactory& workloadFactory,
136  const armnn::ITensorHandleFactory& tensorHandleFactory);
137 
139 Abs2dTest<armnn::DataType::QSymmS16>(
140  armnn::IWorkloadFactory& workloadFactory,
142  const armnn::ITensorHandleFactory& tensorHandleFactory);
143 
145 Abs3dTest<armnn::DataType::Float32>(
146  armnn::IWorkloadFactory& workloadFactory,
148  const armnn::ITensorHandleFactory& tensorHandleFactory);
149 
151 Abs3dTest<armnn::DataType::Float16>(
152  armnn::IWorkloadFactory& workloadFactory,
154  const armnn::ITensorHandleFactory& tensorHandleFactory);
155 
157 Abs3dTest<armnn::DataType::QAsymmS8>(
158  armnn::IWorkloadFactory& workloadFactory,
160  const armnn::ITensorHandleFactory& tensorHandleFactory);
161 
163 Abs3dTest<armnn::DataType::Signed32>(
164  armnn::IWorkloadFactory& workloadFactory,
166  const armnn::ITensorHandleFactory& tensorHandleFactory);
167 
169 Abs3dTest<armnn::DataType::QAsymmU8>(
170  armnn::IWorkloadFactory& workloadFactory,
172  const armnn::ITensorHandleFactory& tensorHandleFactory);
173 
175 Abs3dTest<armnn::DataType::QSymmS16>(
176  armnn::IWorkloadFactory& workloadFactory,
178  const armnn::ITensorHandleFactory& tensorHandleFactory);
179 
181 AbsZeroTest<armnn::DataType::Float32>(
182  armnn::IWorkloadFactory& workloadFactory,
184  const armnn::ITensorHandleFactory& tensorHandleFactory);
185 
187 AbsZeroTest<armnn::DataType::Float16>(
188  armnn::IWorkloadFactory& workloadFactory,
190  const armnn::ITensorHandleFactory& tensorHandleFactory);
191 
193 AbsZeroTest<armnn::DataType::Signed32>(
194  armnn::IWorkloadFactory& workloadFactory,
196  const armnn::ITensorHandleFactory& tensorHandleFactory);
LayerTestResult< T, 3 > Abs3dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
Definition: AbsTestImpl.cpp:44
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< T, 2 > AbsZeroTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
Definition: AbsTestImpl.cpp:76
LayerTestResult< T, 2 > Abs2dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
Definition: AbsTestImpl.cpp:11