ArmNN
 22.02
PadTestImpl.cpp File Reference

Go to the source code of this file.

Functions

template<armnn::DataType ArmnnType, typename T >
LayerTestResult< T, 2 > Pad2dTestCommon (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset, const float customPaddingValue)
 
template<armnn::DataType ArmnnType, typename T >
LayerTestResult< T, 3 > Pad3dTestCommon (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset)
 
template<armnn::DataType ArmnnType, typename T >
LayerTestResult< T, 4 > Pad4dTestCommon (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset)
 
template<armnn::DataType ArmnnType, typename T >
LayerTestResult< T, 2 > PadQAsymmTestCommon (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset, const float customPaddingValue)
 
template LayerTestResult< armnn::ResolveType< armnn::DataType::QSymmS16 >, 2 > Pad2dTestCommon< armnn::DataType::QSymmS16 > (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset, const float customPaddingValue)
 
template LayerTestResult< armnn::ResolveType< armnn::DataType::QSymmS16 >, 3 > Pad3dTestCommon< armnn::DataType::QSymmS16 > (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset)
 
template LayerTestResult< armnn::ResolveType< armnn::DataType::QSymmS16 >, 4 > Pad4dTestCommon< armnn::DataType::QSymmS16 > (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset)
 
template LayerTestResult< armnn::ResolveType< armnn::DataType::QAsymmS8 >, 2 > PadQAsymmTestCommon< armnn::DataType::QAsymmS8 > (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset, const float customPaddingValue)
 
template LayerTestResult< armnn::ResolveType< armnn::DataType::QAsymmU8 >, 2 > PadQAsymmTestCommon< armnn::DataType::QAsymmU8 > (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, float qScale, int32_t qOffset, const float customPaddingValue)
 
LayerTestResult< uint8_t, 2 > PadUint82dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< uint8_t, 2 > PadUint82dCustomPaddingTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< uint8_t, 3 > PadUint83dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< uint8_t, 4 > PadUint84dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< float, 2 > PadFloat322dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< float, 2 > PadFloat322dCustomPaddingTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< float, 3 > PadFloat323dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< float, 4 > PadFloat324dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< armnn::BFloat16, 2 > PadBFloat162dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< armnn::BFloat16, 2 > PadBFloat162dCustomPaddingTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< armnn::BFloat16, 3 > PadBFloat163dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< armnn::BFloat16, 4 > PadBFloat164dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< int8_t, 2 > PadInt82dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< int8_t, 2 > PadInt82dCustomPaddingTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< int8_t, 3 > PadInt83dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< int8_t, 4 > PadInt84dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< int8_t, 2 > PadInt8AsymmTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< int8_t, 2 > PadInt8CustomPaddingAsymmTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 

Function Documentation

◆ Pad2dTestCommon()

LayerTestResult<T, 2> Pad2dTestCommon ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset,
const float  customPaddingValue 
)

Definition at line 20 of file PadTestImpl.cpp.

References CopyDataFromITensorHandle(), CopyDataToITensorHandle(), ITensorHandleFactory::CreateTensorHandle(), IWorkloadFactory::CreateWorkload(), TensorInfo::GetNumElements(), TensorInfo::GetShape(), armnn::IgnoreUnused(), PadDescriptor::m_PadList, PadDescriptor::m_PadValue, QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, and armnn::Pad.

27 {
28  IgnoreUnused(memoryManager);
29  const armnn::TensorShape inputShape{ 3, 3 };
30  const armnn::TensorShape outputShape{ 7, 7 };
31 
32  const armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType, qScale, qOffset);
33  const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType, qScale, qOffset);
34 
35  std::vector<T> inputValues = armnnUtils::QuantizedVector<T>(
36  {
37  // Height (3) x Width (3)
38  4, 8, 6,
39  7, 4, 4,
40  3, 2, 4
41  },
42  qScale, qOffset);
43 
44  auto p = customPaddingValue;
45  std::vector<T> expectedOutputValues = armnnUtils::QuantizedVector<T>(
46  {
47  p, p, p, p, p, p, p,
48  p, p, p, p, p, p, p,
49  p, p, 4, 8, 6, p, p,
50  p, p, 7, 4, 4, p, p,
51  p, p, 3, 2, 4, p, p,
52  p, p, p, p, p, p, p,
53  p, p, p, p, p, p, p
54  },
55  qScale, qOffset);
56 
57  std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
58 
59  std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
60  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
61 
62  armnn::PadQueueDescriptor descriptor;
63 
64  std::vector<std::pair<unsigned int, unsigned int>> padList;
65  padList.push_back(std::pair<unsigned int, unsigned int>(2,2));
66  padList.push_back(std::pair<unsigned int, unsigned int>(2,2));
67 
68  descriptor.m_Parameters.m_PadList = padList;
69  descriptor.m_Parameters.m_PadValue = customPaddingValue;
71 
72  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
73  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
74 
75  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::Pad,
76  descriptor,
77  info);
78 
79  inputHandle->Allocate();
80  outputHandle->Allocate();
81 
82  CopyDataToITensorHandle(inputHandle.get(), inputValues.data());
83 
84  workload->PostAllocationConfigure();
85  workload->Execute();
86 
87  CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
88 
89  return LayerTestResult<T, 2>(actualOutput,
90  expectedOutputValues,
91  outputHandle->GetShape(),
92  outputTensorInfo.GetShape());
93 }
float m_PadValue
Optional value to use for padding, defaults to 0.
std::vector< std::pair< unsigned int, unsigned int > > m_PadList
Specifies the padding for input dimension.
void IgnoreUnused(Ts &&...)
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
Contains information about TensorInfos of a layer.
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0

◆ Pad2dTestCommon< armnn::DataType::QSymmS16 >()

template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2> Pad2dTestCommon< armnn::DataType::QSymmS16 > ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset,
const float  customPaddingValue 
)

◆ Pad3dTestCommon()

LayerTestResult<T, 3> Pad3dTestCommon ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset 
)

Definition at line 96 of file PadTestImpl.cpp.

References CopyDataFromITensorHandle(), CopyDataToITensorHandle(), ITensorHandleFactory::CreateTensorHandle(), IWorkloadFactory::CreateWorkload(), TensorInfo::GetNumElements(), TensorInfo::GetShape(), armnn::IgnoreUnused(), PadDescriptor::m_PadList, QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, and armnn::Pad.

102 {
103  IgnoreUnused(memoryManager);
104  const armnn::TensorShape inputShape{ 2, 2, 2 };
105  const armnn::TensorShape outputShape{ 3, 5, 6 };
106 
107  const armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType, qScale, qOffset);
108  const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType, qScale, qOffset);
109 
110  std::vector<T> inputValues = armnnUtils::QuantizedVector<T>(
111  {
112  // Channel 0, Height (2) x Width (2)
113  0, 4,
114  2, 5,
115 
116  // Channel 1, Height (2) x Width (2)
117  6, 1,
118  5, 2
119  },
120  qScale, qOffset);
121 
122  std::vector<T> expectedOutputValues = armnnUtils::QuantizedVector<T>(
123  {
124  0, 0, 0, 0, 0, 0,
125  0, 0, 0, 0, 0, 0,
126  0, 0, 0, 4, 0, 0,
127  0, 0, 2, 5, 0, 0,
128  0, 0, 0, 0, 0, 0,
129 
130  0, 0, 0, 0, 0, 0,
131  0, 0, 0, 0, 0, 0,
132  0, 0, 6, 1, 0, 0,
133  0, 0, 5, 2, 0, 0,
134  0, 0, 0, 0, 0, 0,
135 
136  0, 0, 0, 0, 0, 0,
137  0, 0, 0, 0, 0, 0,
138  0, 0, 0, 0, 0, 0,
139  0, 0, 0, 0, 0, 0,
140  0, 0, 0, 0, 0, 0
141  },
142  qScale, qOffset);
143 
144  std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
145 
146  std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
147  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
148 
149  armnn::PadQueueDescriptor descriptor;
150 
151  std::vector<std::pair<unsigned int, unsigned int>> PadList;
152  PadList.push_back(std::pair<unsigned int, unsigned int>(0,1));
153  PadList.push_back(std::pair<unsigned int, unsigned int>(2,1));
154  PadList.push_back(std::pair<unsigned int, unsigned int>(2,2));
155 
156  descriptor.m_Parameters.m_PadList = PadList;
158 
159  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
160  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
161 
162  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::Pad,
163  descriptor,
164  info);
165 
166  inputHandle->Allocate();
167  outputHandle->Allocate();
168 
169  CopyDataToITensorHandle(inputHandle.get(), inputValues.data());
170 
171  workload->PostAllocationConfigure();
172  workload->Execute();
173 
174  CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
175 
176  return LayerTestResult<T, 3>(actualOutput,
177  expectedOutputValues,
178  outputHandle->GetShape(),
179  outputTensorInfo.GetShape());
180 }
std::vector< std::pair< unsigned int, unsigned int > > m_PadList
Specifies the padding for input dimension.
void IgnoreUnused(Ts &&...)
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
Contains information about TensorInfos of a layer.
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0

◆ Pad3dTestCommon< armnn::DataType::QSymmS16 >()

template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3> Pad3dTestCommon< armnn::DataType::QSymmS16 > ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset 
)

◆ Pad4dTestCommon()

LayerTestResult<T, 4> Pad4dTestCommon ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset 
)

Definition at line 183 of file PadTestImpl.cpp.

References CopyDataFromITensorHandle(), CopyDataToITensorHandle(), ITensorHandleFactory::CreateTensorHandle(), IWorkloadFactory::CreateWorkload(), TensorInfo::GetNumElements(), TensorInfo::GetShape(), armnn::IgnoreUnused(), PadDescriptor::m_PadList, QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, and armnn::Pad.

189 {
190  IgnoreUnused(memoryManager);
191  const armnn::TensorShape inputShape{ 2, 2, 3, 2 };
192  const armnn::TensorShape outputShape{ 4, 5, 7, 4 };
193 
194  const armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType, qScale, qOffset);
195  const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType, qScale, qOffset);
196 
197  std::vector<T> inputValues = armnnUtils::QuantizedVector<T>(
198  {
199  // Batch 0, Channel 0, Height (3) x Width (2)
200  0, 1,
201  2, 3,
202  4, 5,
203 
204  // Batch 0, Channel 1, Height (3) x Width (2)
205  6, 7,
206  8, 9,
207  10, 11,
208 
209  // Batch 1, Channel 0, Height (3) x Width (2)
210  12, 13,
211  14, 15,
212  16, 17,
213 
214  // Batch 1, Channel 1, Height (3) x Width (2)
215  18, 19,
216  20, 21,
217  22, 23
218  },
219  qScale, qOffset);
220 
221  std::vector<T> expectedOutputValues = armnnUtils::QuantizedVector<T>(
222  {
223  0, 0, 0, 0,
224  0, 0, 0, 0,
225  0, 0, 0, 0,
226  0, 0, 0, 0,
227  0, 0, 0, 0,
228  0, 0, 0, 0,
229  0, 0, 0, 0,
230 
231  0, 0, 0, 0,
232  0, 0, 0, 0,
233  0, 0, 0, 0,
234  0, 0, 0, 0,
235  0, 0, 0, 0,
236  0, 0, 0, 0,
237  0, 0, 0, 0,
238 
239  0, 0, 0, 0,
240  0, 0, 0, 0,
241  0, 0, 0, 0,
242  0, 0, 0, 0,
243  0, 0, 0, 0,
244  0, 0, 0, 0,
245  0, 0, 0, 0,
246 
247  0, 0, 0, 0,
248  0, 0, 0, 0,
249  0, 0, 0, 0,
250  0, 0, 0, 0,
251  0, 0, 0, 0,
252  0, 0, 0, 0,
253  0, 0, 0, 0,
254 
255  0, 0, 0, 0,
256  0, 0, 0, 0,
257  0, 0, 0, 0,
258  0, 0, 0, 0,
259  0, 0, 0, 0,
260  0, 0, 0, 0,
261  0, 0, 0, 0,
262 
263  0, 0, 0, 0,
264  0, 0, 0, 0,
265  0, 0, 0, 0,
266  0, 0, 0, 0,
267  0, 0, 0, 0,
268  0, 0, 0, 0,
269  0, 0, 0, 0,
270 
271  0, 0, 0, 0,
272  0, 0, 0, 0,
273  0, 0, 0, 0,
274  0, 0, 0, 0,
275  0, 0, 0, 0,
276  0, 0, 0, 0,
277  0, 0, 0, 0,
278 
279  0, 0, 0, 0,
280  0, 0, 0, 0,
281  0, 0, 0, 0,
282  0, 0, 1, 0,
283  0, 2, 3, 0,
284  0, 4, 5, 0,
285  0, 0, 0, 0,
286 
287  0, 0, 0, 0,
288  0, 0, 0, 0,
289  0, 0, 0, 0,
290  0, 6, 7, 0,
291  0, 8, 9, 0,
292  0, 10, 11, 0,
293  0, 0, 0, 0,
294 
295  0, 0, 0, 0,
296  0, 0, 0, 0,
297  0, 0, 0, 0,
298  0, 0, 0, 0,
299  0, 0, 0, 0,
300  0, 0, 0, 0,
301  0, 0, 0, 0,
302 
303  0, 0, 0, 0,
304  0, 0, 0, 0,
305  0, 0, 0, 0,
306  0, 0, 0, 0,
307  0, 0, 0, 0,
308  0, 0, 0, 0,
309  0, 0, 0, 0,
310 
311  0, 0, 0, 0,
312  0, 0, 0, 0,
313  0, 0, 0, 0,
314  0, 0, 0, 0,
315  0, 0, 0, 0,
316  0, 0, 0, 0,
317  0, 0, 0, 0,
318 
319  0, 0, 0, 0,
320  0, 0, 0, 0,
321  0, 0, 0, 0,
322  0, 12, 13, 0,
323  0, 14, 15, 0,
324  0, 16, 17, 0,
325  0, 0, 0, 0,
326 
327  0, 0, 0, 0,
328  0, 0, 0, 0,
329  0, 0, 0, 0,
330  0, 18, 19, 0,
331  0, 20, 21, 0,
332  0, 22, 23, 0,
333  0, 0, 0, 0,
334 
335  0, 0, 0, 0,
336  0, 0, 0, 0,
337  0, 0, 0, 0,
338  0, 0, 0, 0,
339  0, 0, 0, 0,
340  0, 0, 0, 0,
341  0, 0, 0, 0,
342 
343  0, 0, 0, 0,
344  0, 0, 0, 0,
345  0, 0, 0, 0,
346  0, 0, 0, 0,
347  0, 0, 0, 0,
348  0, 0, 0, 0,
349  0, 0, 0, 0,
350 
351  0, 0, 0, 0,
352  0, 0, 0, 0,
353  0, 0, 0, 0,
354  0, 0, 0, 0,
355  0, 0, 0, 0,
356  0, 0, 0, 0,
357  0, 0, 0, 0,
358 
359  0, 0, 0, 0,
360  0, 0, 0, 0,
361  0, 0, 0, 0,
362  0, 0, 0, 0,
363  0, 0, 0, 0,
364  0, 0, 0, 0,
365  0, 0, 0, 0,
366 
367  0, 0, 0, 0,
368  0, 0, 0, 0,
369  0, 0, 0, 0,
370  0, 0, 0, 0,
371  0, 0, 0, 0,
372  0, 0, 0, 0,
373  0, 0, 0, 0,
374 
375  0, 0, 0, 0,
376  0, 0, 0, 0,
377  0, 0, 0, 0,
378  0, 0, 0, 0,
379  0, 0, 0, 0,
380  0, 0, 0, 0,
381  0, 0, 0, 0
382  },
383  qScale, qOffset);
384 
385  std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
386 
387  std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
388  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
389 
390  armnn::PadQueueDescriptor descriptor;
391 
392  std::vector<std::pair<unsigned int, unsigned int>> PadList;
393  PadList.push_back(std::pair<unsigned int, unsigned int>(1,1));
394  PadList.push_back(std::pair<unsigned int, unsigned int>(2,1));
395  PadList.push_back(std::pair<unsigned int, unsigned int>(3,1));
396  PadList.push_back(std::pair<unsigned int, unsigned int>(1,1));
397 
398  descriptor.m_Parameters.m_PadList = PadList;
400 
401  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
402  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
403 
404  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::Pad,
405  descriptor,
406  info);
407 
408  inputHandle->Allocate();
409  outputHandle->Allocate();
410 
411  CopyDataToITensorHandle(inputHandle.get(), inputValues.data());
412 
413  workload->PostAllocationConfigure();
414  workload->Execute();
415 
416  CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
417 
418  return LayerTestResult<T, 4>(actualOutput,
419  expectedOutputValues,
420  outputHandle->GetShape(),
421  outputTensorInfo.GetShape());
422 }
std::vector< std::pair< unsigned int, unsigned int > > m_PadList
Specifies the padding for input dimension.
void IgnoreUnused(Ts &&...)
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
Contains information about TensorInfos of a layer.
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0

◆ Pad4dTestCommon< armnn::DataType::QSymmS16 >()

template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4> Pad4dTestCommon< armnn::DataType::QSymmS16 > ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset 
)

◆ PadBFloat162dCustomPaddingTest()

LayerTestResult<armnn::BFloat16, 2> PadBFloat162dCustomPaddingTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 624 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

628 {
629  return Pad2dTestCommon<armnn::DataType::BFloat16>(
630  workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0, 1.0f);
631 }

◆ PadBFloat162dTest()

LayerTestResult<armnn::BFloat16, 2> PadBFloat162dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 616 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

620 {
621  return Pad2dTestCommon<armnn::DataType::BFloat16>(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);
622 }

◆ PadBFloat163dTest()

LayerTestResult<armnn::BFloat16, 3> PadBFloat163dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 633 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

637 {
638  return Pad3dTestCommon<armnn::DataType::BFloat16>(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);
639 }

◆ PadBFloat164dTest()

LayerTestResult<armnn::BFloat16, 4> PadBFloat164dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 641 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

645 {
646  return Pad4dTestCommon<armnn::DataType::BFloat16>(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);
647 }

◆ PadFloat322dCustomPaddingTest()

LayerTestResult<float, 2> PadFloat322dCustomPaddingTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 591 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

595 {
596  return Pad2dTestCommon<armnn::DataType::Float32>(
597  workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0, 1.0f);
598 }

◆ PadFloat322dTest()

LayerTestResult<float, 2> PadFloat322dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 583 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

587 {
588  return Pad2dTestCommon<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);
589 }

◆ PadFloat323dTest()

LayerTestResult<float, 3> PadFloat323dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 600 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

604 {
605  return Pad3dTestCommon<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);
606 }

◆ PadFloat324dTest()

LayerTestResult<float, 4> PadFloat324dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 608 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

612 {
613  return Pad4dTestCommon<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);
614 }

◆ PadInt82dCustomPaddingTest()

LayerTestResult<int8_t, 2> PadInt82dCustomPaddingTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 658 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

662 {
663  return Pad2dTestCommon<armnn::DataType::QSymmS8>(
664  workloadFactory, memoryManager, tensorHandleFactory, 1.0f, 0, 1.0f);
665 }

◆ PadInt82dTest()

LayerTestResult<int8_t, 2> PadInt82dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 649 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

653 {
654  return Pad2dTestCommon<armnn::DataType::QSymmS8>(
655  workloadFactory, memoryManager, tensorHandleFactory, 1.0f, 0);
656 }

◆ PadInt83dTest()

LayerTestResult<int8_t, 3> PadInt83dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 667 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

671 {
672  return Pad3dTestCommon<armnn::DataType::QSymmS8>(workloadFactory, memoryManager, tensorHandleFactory, 1.0f, 0);
673 }

◆ PadInt84dTest()

LayerTestResult<int8_t, 4> PadInt84dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 675 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

679 {
680  return Pad4dTestCommon<armnn::DataType::QSymmS8>(workloadFactory, memoryManager, tensorHandleFactory, 1.0f, 0);
681 }

◆ PadInt8AsymmTest()

LayerTestResult<int8_t, 2> PadInt8AsymmTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 683 of file PadTestImpl.cpp.

687 {
688  return PadQAsymmTestCommon<armnn::DataType::QAsymmS8>(
689  workloadFactory, memoryManager, tensorHandleFactory, 2.0f, 2);
690 }

◆ PadInt8CustomPaddingAsymmTest()

LayerTestResult<int8_t, 2> PadInt8CustomPaddingAsymmTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 692 of file PadTestImpl.cpp.

696 {
697  return PadQAsymmTestCommon<armnn::DataType::QAsymmS8>(
698  workloadFactory, memoryManager, tensorHandleFactory, 2.0f, 3, 1.0f);
699 }

◆ PadQAsymmTestCommon()

LayerTestResult<T, 2> PadQAsymmTestCommon ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset,
const float  customPaddingValue 
)

Definition at line 425 of file PadTestImpl.cpp.

References CopyDataFromITensorHandle(), CopyDataToITensorHandle(), ITensorHandleFactory::CreateTensorHandle(), IWorkloadFactory::CreateWorkload(), TensorInfo::GetNumElements(), TensorInfo::GetShape(), armnn::IgnoreUnused(), PadDescriptor::m_PadList, PadDescriptor::m_PadValue, QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, and armnn::Pad.

432 {
433  IgnoreUnused(memoryManager);
434  const armnn::TensorShape inputShape{ 3, 3 };
435  const armnn::TensorShape outputShape{ 7, 7 };
436 
437  const armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType, qScale, qOffset);
438  const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType, qScale, qOffset);
439 
440  std::vector<T> inputValues =
441  {
442  // Height (3) x Width (3)
443  4, 8, 6,
444  7, 4, 4,
445  3, 2, 4
446  };
447 
448  T p = static_cast<T>(customPaddingValue);
449  std::vector<T> expectedOutputValues =
450  {
451  p, p, p, p, p, p, p,
452  p, p, p, p, p, p, p,
453  p, p, 4, 8, 6, p, p,
454  p, p, 7, 4, 4, p, p,
455  p, p, 3, 2, 4, p, p,
456  p, p, p, p, p, p, p,
457  p, p, p, p, p, p, p
458  };
459 
460  std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
461 
462  std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
463  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
464 
465 
466  armnn::PadQueueDescriptor descriptor;
467 
468  std::vector<std::pair<unsigned int, unsigned int>> padList;
469  padList.push_back(std::pair<unsigned int, unsigned int>(2,2));
470  padList.push_back(std::pair<unsigned int, unsigned int>(2,2));
471 
472  descriptor.m_Parameters.m_PadList = padList;
473  descriptor.m_Parameters.m_PadValue = customPaddingValue;
475 
476  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
477  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
478 
479  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::Pad,
480  descriptor,
481  info);
482 
483  inputHandle->Allocate();
484  outputHandle->Allocate();
485 
486  CopyDataToITensorHandle(inputHandle.get(), inputValues.data());
487 
488  workload->PostAllocationConfigure();
489  workload->Execute();
490 
491  CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
492 
493  return LayerTestResult<T, 2>(actualOutput,
494  expectedOutputValues,
495  outputHandle->GetShape(),
496  outputTensorInfo.GetShape());
497 }
float m_PadValue
Optional value to use for padding, defaults to 0.
std::vector< std::pair< unsigned int, unsigned int > > m_PadList
Specifies the padding for input dimension.
void IgnoreUnused(Ts &&...)
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
Contains information about TensorInfos of a layer.
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0

◆ PadQAsymmTestCommon< armnn::DataType::QAsymmS8 >()

template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2> PadQAsymmTestCommon< armnn::DataType::QAsymmS8 > ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset,
const float  customPaddingValue 
)

◆ PadQAsymmTestCommon< armnn::DataType::QAsymmU8 >()

template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2> PadQAsymmTestCommon< armnn::DataType::QAsymmU8 > ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
float  qScale,
int32_t  qOffset,
const float  customPaddingValue 
)

◆ PadUint82dCustomPaddingTest()

LayerTestResult<uint8_t, 2> PadUint82dCustomPaddingTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 558 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

562 {
563  return Pad2dTestCommon<armnn::DataType::QAsymmU8>(
564  workloadFactory, memoryManager, tensorHandleFactory, 1.0f, 0, 1.0f);
565 }

◆ PadUint82dTest()

LayerTestResult<uint8_t, 2> PadUint82dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 550 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

554 {
555  return Pad2dTestCommon<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory, 1.0f, 0);
556 }

◆ PadUint83dTest()

LayerTestResult<uint8_t, 3> PadUint83dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 567 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

571 {
572  return Pad3dTestCommon<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory, 1.0f, 0);
573 }

◆ PadUint84dTest()

LayerTestResult<uint8_t, 4> PadUint84dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 575 of file PadTestImpl.cpp.

Referenced by TEST_SUITE().

579 {
580  return Pad4dTestCommon<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory, 1.0f, 0);
581 }