23 template<armnn::DataType ArmnnType,
typename T, std::
size_t outputDimLength>
31 const std::vector<std::vector<T>>& inputData,
32 const std::vector<T>& outputExpectedData)
35 unsigned int numInputs =
static_cast<unsigned int>(inputData.size());
36 std::vector<std::vector<T>> inputs;
37 for (
unsigned int i = 0; i < numInputs; ++i)
39 inputs.emplace_back(inputData[i]);
44 std::vector<std::unique_ptr<armnn::ITensorHandle>> inputHandles;
45 for (
unsigned int i = 0; i < numInputs; ++i)
49 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
57 for (
unsigned int i = 0; i < numInputs; ++i)
59 std::unique_ptr<armnn::ITensorHandle>& inputHandle = inputHandles[i];
60 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
61 inputHandle->Allocate();
65 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
66 outputHandle->Allocate();
78 outputHandle->GetShape(),
88 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
97 std::vector<std::vector<T>> inputData;
123 std::vector<T> outputExpectedData =
145 return StackTestHelper<ArmnnType, T, 4>(
157 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
166 std::vector<std::vector<T>> inputData;
192 std::vector<T> outputExpectedData =
215 return StackTestHelper<ArmnnType, T, 4>(
227 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
236 std::vector<std::vector<T>> inputData;
262 std::vector<T> outputExpectedData =
283 return StackTestHelper<ArmnnType, T, 4>(
295 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
304 std::vector<std::vector<T>> inputData;
330 std::vector<T> outputExpectedData =
359 return StackTestHelper<ArmnnType, T, 4>(
371 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
380 std::vector<std::vector<T>> inputData;
403 std::vector<T> outputExpectedData =
418 return StackTestHelper<ArmnnType, T, 3>(
430 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
439 std::vector<std::vector<T>> inputData;
473 std::vector<T> outputExpectedData =
505 return StackTestHelper<ArmnnType, T, 5>(
526 return StackAxis0TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
534 return StackOutput4DAxis1TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
542 return StackOutput4DAxis2TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
550 return StackOutput4DAxis3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
558 return StackOutput3DInputs3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
566 return StackOutput5DTestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
574 using namespace half_float::literal;
579 std::vector<std::vector<armnn::Half>> inputData;
587 10.0_h, 11.0_h, 12.0_h,
589 13.0_h, 14.0_h, 15.0_h,
590 16.0_h, 17.0_h, 18.0_h
595 19.0_h, 20.0_h, 21.0_h,
596 22.0_h, 23.0_h, 24.0_h,
598 25.0_h, 26.0_h, 27.0_h,
599 28.0_h, 29.0_h, 30.0_h,
601 31.0_h, 32.0_h, 33.0_h,
602 34.0_h, 35.0_h, 36.0_h
605 std::vector<armnn::Half> outputExpectedData =
608 19.0_h, 20.0_h, 21.0_h,
611 22.0_h, 23.0_h, 24.0_h,
614 25.0_h, 26.0_h, 27.0_h,
616 10.0_h, 11.0_h, 12.0_h,
617 28.0_h, 29.0_h, 30.0_h,
619 13.0_h, 14.0_h, 15.0_h,
620 31.0_h, 32.0_h, 33.0_h,
622 16.0_h, 17.0_h, 18.0_h,
623 34.0_h, 35.0_h, 36.0_h
626 return StackTestHelper<armnn::DataType::Float16, armnn::Half, 4>(
643 return StackAxis0TestImpl<armnn::DataType::Signed32>(workloadFactory, memoryManager, tensorHandleFactory);
LayerTestResult< float, 5 > StackOutput5DFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
uint32_t m_Axis
0-based axis along which to stack the input tensors.
const TensorShape & GetShape() const
TensorShape m_InputShape
Required shape of all input tensors.
LayerTestResult< armnn::Half, 4 > StackFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< T, 4 > StackOutput4DAxis2TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< T, 4 > StackOutput4DAxis3TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void IgnoreUnused(Ts &&...)
LayerDescriptor m_Parameters
LayerTestResult< float, 4 > StackAxis0Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< T, 5 > StackOutput5DTestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > StackOutput4DAxis3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< T, 4 > StackAxis0TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
LayerTestResult< T, 4 > StackOutput4DAxis1TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int32_t, 4 > StackInt32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
uint32_t m_NumInputs
Number of input tensors.
LayerTestResult< float, 4 > StackOutput4DAxis1Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > StackOutput4DAxis2Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 3 > StackOutput3DInputs3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
LayerTestResult< T, 3 > StackOutput3DInputs3TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
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
unsigned int GetNumElements() const