xref: /aosp_15_r20/external/armnn/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include <armnnTestUtils/LayerTestResult.hpp>
9 
10 #include <ResolveType.hpp>
11 
12 #include <armnn/Types.hpp>
13 
14 #include <armnn/backends/IBackendInternal.hpp>
15 #include <armnn/backends/WorkloadFactory.hpp>
16 
17 //
18 // Convolution2d
19 //
20 
21 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
22 LayerTestResult<T, 4> Convolution2d3x3Dilation3x3Test(
23     armnn::IWorkloadFactory& workloadFactory,
24     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
25     const armnn::ITensorHandleFactory& tensorHandleFactory,
26     bool biasEnabled,
27     const armnn::DataLayout layout);
28 
29 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
30 LayerTestResult<T, 4> Convolution2d2x3x3Dilation3x3Test(
31     armnn::IWorkloadFactory& workloadFactory,
32     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
33     const armnn::ITensorHandleFactory& tensorHandleFactory,
34     bool biasEnabled,
35     const armnn::DataLayout layout);
36 
37 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
38 LayerTestResult<T, 4> Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test(
39     armnn::IWorkloadFactory &workloadFactory,
40     const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager,
41     const armnn::ITensorHandleFactory& tensorHandleFactory,
42     bool biasEnabled,
43     const armnn::DataLayout layout);
44 
45 LayerTestResult<float, 4> SimpleConvolution2d3x5Test(
46     armnn::IWorkloadFactory& workloadFactory,
47     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
48     const armnn::ITensorHandleFactory& tensorHandleFactory,
49     bool biasEnabled,
50     const armnn::DataLayout layout);
51 
52 LayerTestResult<float, 4> SimpleConvolution2d3x3Test(
53     armnn::IWorkloadFactory& workloadFactory,
54     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
55     const armnn::ITensorHandleFactory& tensorHandleFactory,
56     bool biasEnabled,
57     const armnn::DataLayout layout);
58 
59 LayerTestResult<float, 4> SimpleConvolution2d3x3Stride2x2Test(
60     armnn::IWorkloadFactory& workloadFactory,
61     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
62     const armnn::ITensorHandleFactory& tensorHandleFactory,
63     bool biasEnabled,
64     const armnn::DataLayout layout);
65 
66 LayerTestResult<float, 4> SimpleConvolution2d3x3NhwcTest(
67     armnn::IWorkloadFactory& workloadFactory,
68     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
69     const armnn::ITensorHandleFactory& tensorHandleFactory,
70     bool biasEnabled);
71 
72 LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test(
73     armnn::IWorkloadFactory& workloadFactory,
74     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
75     const armnn::ITensorHandleFactory& tensorHandleFactory,
76     bool biasEnabled,
77     const armnn::DataLayout layout);
78 
79 LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test(
80     armnn::IWorkloadFactory& workloadFactory,
81     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
82     const armnn::ITensorHandleFactory& tensorHandleFactory,
83     bool biasEnabled,
84     const armnn::DataLayout layout);
85 
86 LayerTestResult<int16_t, 4> SimpleConvolution2d3x5QSymm16Test(
87         armnn::IWorkloadFactory& workloadFactory,
88         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
89         const armnn::ITensorHandleFactory& tensorHandleFactory,
90         bool biasEnabled,
91         const armnn::DataLayout layout);
92 
93 LayerTestResult<int16_t, 4> SimpleConvolution2d3x3QSymm16Test(
94         armnn::IWorkloadFactory& workloadFactory,
95         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
96         const armnn::ITensorHandleFactory& tensorHandleFactory,
97         bool biasEnabled,
98         const armnn::DataLayout layout);
99 
100 LayerTestResult<float, 4> Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest(
101     armnn::IWorkloadFactory& workloadFactory,
102     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
103     const armnn::ITensorHandleFactory& tensorHandleFactory,
104     armnn::DataLayout layout);
105 
106 LayerTestResult<float, 4> Convolution2dAsymmetricPaddingTest(
107     armnn::IWorkloadFactory& workloadFactory,
108     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
109     const armnn::ITensorHandleFactory& tensorHandleFactory,
110     armnn::DataLayout layout);
111 
112 LayerTestResult<float,   4> Convolution1dTest(
113     armnn::IWorkloadFactory& workloadFactory,
114     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
115     const armnn::ITensorHandleFactory& tensorHandleFactory,
116     bool biasEnabled);
117 
118 LayerTestResult<uint8_t, 4> Convolution1dUint8Test(
119     armnn::IWorkloadFactory& workloadFactory,
120     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
121     const armnn::ITensorHandleFactory& tensorHandleFactory,
122     bool biasEnabled);
123 
124 LayerTestResult<float, 4> CompareConvolution2dTest(
125     armnn::IWorkloadFactory& workloadFactory,
126     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
127     armnn::IWorkloadFactory& refWorkloadFactory,
128     const armnn::ITensorHandleFactory& tensorHandleFactory,
129     const armnn::ITensorHandleFactory& refTensorHandleFactory);
130 
131 LayerTestResult<uint8_t, 4> Convolution2dPerAxisQuantTest(
132     armnn::IWorkloadFactory& workloadFactory,
133     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
134     const armnn::ITensorHandleFactory& tensorHandleFactory,
135     const armnn::DataLayout layout);
136 
137 LayerTestResult<float, 4> Convolution2d3x3Stride2x2BFloat16Test(
138         armnn::IWorkloadFactory& workloadFactory,
139         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
140         const armnn::ITensorHandleFactory& tensorHandleFactory,
141         bool biasEnabled,
142         const armnn::DataLayout& dataLayout);
143 
144 LayerTestResult<float, 4> Convolution2d3x3Stride2x2BFloat16SmallValueTest(
145         armnn::IWorkloadFactory& workloadFactory,
146         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
147         const armnn::ITensorHandleFactory& tensorHandleFactory,
148         bool biasEnabled,
149         const armnn::DataLayout& dataLayout);
150 
151 //
152 // DepthwiseConvolution2d
153 //
154 
155 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
156 LayerTestResult<T, 4> DepthwiseConvolution2d3x3Dilation3x3Test(
157     armnn::IWorkloadFactory& workloadFactory,
158     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
159     const armnn::ITensorHandleFactory& tensorHandleFactory,
160     bool biasEnabled,
161     const armnn::DataLayout layout);
162 
163 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
164 LayerTestResult<T, 4> DepthwiseConvolution2d2x3x3Dilation3x3Test(
165     armnn::IWorkloadFactory& workloadFactory,
166     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
167     const armnn::ITensorHandleFactory& tensorHandleFactory,
168     bool biasEnabled,
169     const armnn::DataLayout layout);
170 
171 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
172 LayerTestResult<T, 4> DepthwiseConvolution2dMult4Test(
173     armnn::IWorkloadFactory& workloadFactory,
174     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
175     const armnn::ITensorHandleFactory& tensorHandleFactory,
176     bool biasEnabled,
177     const armnn::DataLayout layout);
178 
179 template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
180 LayerTestResult<T, 4> DepthwiseConvolution2dMult2Test(
181     armnn::IWorkloadFactory& workloadFactory,
182     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
183     const armnn::ITensorHandleFactory& tensorHandleFactory,
184     bool biasEnabled,
185     const armnn::DataLayout layout);
186 
187 template<typename T>
188 LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest(
189     armnn::IWorkloadFactory& workloadFactory,
190     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
191     armnn::IWorkloadFactory& refWorkloadFactory,
192     const armnn::ITensorHandleFactory& tensorHandleFactory,
193     const armnn::ITensorHandleFactory& refTensorHandleFactory,
194     const armnn::DataLayout layout);
195 
196 LayerTestResult<float, 4> DepthwiseConvolution2dTest(
197     armnn::IWorkloadFactory& workloadFactory,
198     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
199     const armnn::ITensorHandleFactory& tensorHandleFactory,
200     bool biasEnabled,
201     const armnn::DataLayout layout);
202 
203 LayerTestResult<float, 4> DepthwiseConvolution2dDepthNhwcTest(
204     armnn::IWorkloadFactory& workloadFactory,
205     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
206     const armnn::ITensorHandleFactory& tensorHandleFactory,
207     bool biasEnabled);
208 
209 LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul1Test(
210     armnn::IWorkloadFactory& workloadFactory,
211     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
212     const armnn::ITensorHandleFactory& tensorHandleFactory,
213     bool biasEnabled,
214     const armnn::DataLayout layout);
215 
216 LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul64Test(
217     armnn::IWorkloadFactory& workloadFactory,
218     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
219     const armnn::ITensorHandleFactory& tensorHandleFactory);
220 
221 LayerTestResult<float, 4> DepthwiseConvolution2dAsymmetricTest(
222     armnn::IWorkloadFactory& workloadFactory,
223     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
224     const armnn::ITensorHandleFactory& tensorHandleFactory,
225     bool biasEnabled,
226     const armnn::DataLayout layout);
227 
228 LayerTestResult<float, 4> SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest(
229     armnn::IWorkloadFactory& workloadFactory,
230     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
231     const armnn::ITensorHandleFactory& tensorHandleFactory);
232 
233 LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test(
234     armnn::IWorkloadFactory& workloadFactory,
235     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
236     const armnn::ITensorHandleFactory& tensorHandleFactory,
237     bool biasEnabled,
238     const armnn::DataLayout layout);
239 
240 LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test(
241     armnn::IWorkloadFactory& workloadFactory,
242     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
243     const armnn::ITensorHandleFactory& tensorHandleFactory,
244     bool biasEnabled,
245     const armnn::DataLayout layout);
246 
247 LayerTestResult<int16_t, 4> DepthwiseConvolution2dInt16Test(
248     armnn::IWorkloadFactory& workloadFactory,
249     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
250     const armnn::ITensorHandleFactory& tensorHandleFactory,
251     bool biasEnabled,
252     const armnn::DataLayout layout);
253 
254 LayerTestResult<int16_t, 4> DepthwiseConvolution2dDepthMul1Int16Test(
255     armnn::IWorkloadFactory& workloadFactory,
256     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
257     const armnn::ITensorHandleFactory& tensorHandleFactory,
258     bool biasEnabled,
259     const armnn::DataLayout layout);
260 
261 LayerTestResult<uint8_t, 4> DepthwiseConvolution2dPerAxisQuantTest(
262     armnn::IWorkloadFactory& workloadFactory,
263     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
264     const armnn::ITensorHandleFactory& tensorHandleFactory,
265     const armnn::DataLayout layout);
266 
267 LayerTestResult<float, 4> CompareDepthwiseConvolution2dFloatTest(
268     armnn::IWorkloadFactory& workloadFactory,
269     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
270     armnn::IWorkloadFactory& refWorkloadFactory,
271     const armnn::ITensorHandleFactory& tensorHandleFactory,
272     const armnn::ITensorHandleFactory& refTensorHandleFactory,
273     const armnn::DataLayout layout);
274 
275 LayerTestResult<uint8_t, 4> CompareDepthwiseConvolution2dUint8Test(
276     armnn::IWorkloadFactory& workloadFactory,
277     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
278     armnn::IWorkloadFactory& refWorkloadFactory,
279     const armnn::ITensorHandleFactory& tensorHandleFactory,
280     const armnn::ITensorHandleFactory& refTensorHandleFactory,
281     const armnn::DataLayout layout);
282