19 template<armnn::DataType ArmnnType,
typename T>
25 const float customPaddingValue)
32 const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType, qScale, qOffset);
34 std::vector<T> inputValues = armnnUtils::QuantizedVector<T>(
43 auto p = customPaddingValue;
44 std::vector<T> expectedOutputValues = armnnUtils::QuantizedVector<T>(
56 auto inputTensor = MakeTensor<T, 2>(inputTensorInfo, std::vector<T>(inputValues));
59 result.
outputExpected = MakeTensor<T, 2>(outputTensorInfo, std::vector<T>(expectedOutputValues));
61 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputTensorInfo);
62 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputTensorInfo);
66 std::vector<std::pair<unsigned int, unsigned int>> padList;
67 padList.push_back(std::pair<unsigned int, unsigned int>(2,2));
68 padList.push_back(std::pair<unsigned int, unsigned int>(2,2));
74 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
75 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
77 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreatePad(descriptor, info);
79 inputHandle->Allocate();
80 outputHandle->Allocate();
84 workload->PostAllocationConfigure();
92 template<armnn::DataType ArmnnType,
typename T>
104 const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType, qScale, qOffset);
106 std::vector<T> inputValues = armnnUtils::QuantizedVector<T>(
118 std::vector<T> expectedOutputValues = armnnUtils::QuantizedVector<T>(
140 auto inputTensor = MakeTensor<T, 3>(inputTensorInfo, std::vector<T>(inputValues));
143 result.
outputExpected = MakeTensor<T, 3>(outputTensorInfo, std::vector<T>(expectedOutputValues));
145 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputTensorInfo);
146 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputTensorInfo);
150 std::vector<std::pair<unsigned int, unsigned int>> PadList;
151 PadList.push_back(std::pair<unsigned int, unsigned int>(0,1));
152 PadList.push_back(std::pair<unsigned int, unsigned int>(2,1));
153 PadList.push_back(std::pair<unsigned int, unsigned int>(2,2));
158 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
159 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
161 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreatePad(descriptor, info);
163 inputHandle->Allocate();
164 outputHandle->Allocate();
168 workload->PostAllocationConfigure();
176 template<armnn::DataType ArmnnType,
typename T>
188 const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType, qScale, qOffset);
190 std::vector<T> inputValues = armnnUtils::QuantizedVector<T>(
214 std::vector<T> expectedOutputValues = armnnUtils::QuantizedVector<T>(
378 auto inputTensor = MakeTensor<T, 4>(inputTensorInfo, std::vector<T>(inputValues));
381 result.
outputExpected = MakeTensor<T, 4>(outputTensorInfo, std::vector<T>(expectedOutputValues));
383 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputTensorInfo);
384 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputTensorInfo);
388 std::vector<std::pair<unsigned int, unsigned int>> PadList;
389 PadList.push_back(std::pair<unsigned int, unsigned int>(1,1));
390 PadList.push_back(std::pair<unsigned int, unsigned int>(2,1));
391 PadList.push_back(std::pair<unsigned int, unsigned int>(3,1));
392 PadList.push_back(std::pair<unsigned int, unsigned int>(1,1));
397 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
398 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
400 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreatePad(descriptor, info);
402 inputHandle->Allocate();
403 outputHandle->Allocate();
407 workload->PostAllocationConfigure();
420 Pad2dTestCommon<armnn::DataType::QSymmS16>(
425 const float customPaddingValue);
428 Pad3dTestCommon<armnn::DataType::QSymmS16>(
434 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
435 Pad4dTestCommon<armnn::DataType::QSymmS16>(
449 return Pad2dTestCommon<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, 1.0f, 0);
456 return Pad2dTestCommon<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, 1.0f, 0, 1.0f);
463 return Pad3dTestCommon<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, 1.0f, 0);
470 return Pad4dTestCommon<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, 1.0f, 0);
477 return Pad2dTestCommon<armnn::DataType::Float32>(workloadFactory, memoryManager, 0.0f, 0);
484 return Pad2dTestCommon<armnn::DataType::Float32>(workloadFactory, memoryManager, 0.0f, 0, 1.0f);
491 return Pad3dTestCommon<armnn::DataType::Float32>(workloadFactory, memoryManager, 0.0f, 0);
498 return Pad4dTestCommon<armnn::DataType::Float32>(workloadFactory, memoryManager, 0.0f, 0);
505 return Pad2dTestCommon<armnn::DataType::BFloat16>(workloadFactory, memoryManager, 0.0f, 0);
512 return Pad2dTestCommon<armnn::DataType::BFloat16>(workloadFactory, memoryManager, 0.0f, 0, 1.0f);
519 return Pad3dTestCommon<armnn::DataType::BFloat16>(workloadFactory, memoryManager, 0.0f, 0);
526 return Pad4dTestCommon<armnn::DataType::BFloat16>(workloadFactory, memoryManager, 0.0f, 0);
float m_PadValue
Optional value to use for padding, defaults to 0.
LayerTestResult< armnn::BFloat16, 2 > PadBFloat162dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
boost::multi_array< T, n > outputExpected
std::vector< std::pair< unsigned int, unsigned int > > m_PadList
Specifies the padding for input dimension.
LayerTestResult< uint8_t, 3 > PadUint83dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 2 > PadFloat322dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void IgnoreUnused(Ts &&...)
LayerDescriptor m_Parameters
LayerTestResult< T, 4 > Pad4dTestCommon(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, float qScale, int32_t qOffset)
LayerTestResult< T, 3 > Pad3dTestCommon(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, float qScale, int32_t qOffset)
LayerTestResult< uint8_t, 2 > PadUint82dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 4 > PadFloat324dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 2 > PadFloat322dCustomPaddingTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
virtual std::unique_ptr< IWorkload > CreatePad(const PadQueueDescriptor &descriptor, const WorkloadInfo &Info) const
LayerTestResult< float, 3 > PadFloat323dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
LayerTestResult< armnn::BFloat16, 2 > PadBFloat162dCustomPaddingTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
boost::multi_array< T, n > output
LayerTestResult< uint8_t, 4 > PadUint84dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< armnn::BFloat16, 3 > PadBFloat163dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< armnn::BFloat16, 4 > PadBFloat164dTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
Contains information about inputs and outputs to a layer.
LayerTestResult< uint8_t, 2 > PadUint82dCustomPaddingTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 2 > Pad2dTestCommon(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, float qScale, int32_t qOffset, const float customPaddingValue)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)