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();
68 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateStack(descriptor, info);
76 outputHandle->GetShape(),
86 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
95 std::vector<std::vector<T>> inputData;
121 std::vector<T> outputExpectedData =
143 return StackTestHelper<ArmnnType, T, 4>(
155 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
164 std::vector<std::vector<T>> inputData;
190 std::vector<T> outputExpectedData =
213 return StackTestHelper<ArmnnType, T, 4>(
225 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
234 std::vector<std::vector<T>> inputData;
260 std::vector<T> outputExpectedData =
281 return StackTestHelper<ArmnnType, T, 4>(
293 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
302 std::vector<std::vector<T>> inputData;
328 std::vector<T> outputExpectedData =
357 return StackTestHelper<ArmnnType, T, 4>(
369 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
378 std::vector<std::vector<T>> inputData;
401 std::vector<T> outputExpectedData =
416 return StackTestHelper<ArmnnType, T, 3>(
428 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
437 std::vector<std::vector<T>> inputData;
471 std::vector<T> outputExpectedData =
503 return StackTestHelper<ArmnnType, T, 5>(
524 return StackAxis0TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
532 return StackOutput4DAxis1TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
540 return StackOutput4DAxis2TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
548 return StackOutput4DAxis3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
556 return StackOutput3DInputs3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
564 return StackOutput5DTestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
572 using namespace half_float::literal;
577 std::vector<std::vector<armnn::Half>> inputData;
585 10.0_h, 11.0_h, 12.0_h,
587 13.0_h, 14.0_h, 15.0_h,
588 16.0_h, 17.0_h, 18.0_h
593 19.0_h, 20.0_h, 21.0_h,
594 22.0_h, 23.0_h, 24.0_h,
596 25.0_h, 26.0_h, 27.0_h,
597 28.0_h, 29.0_h, 30.0_h,
599 31.0_h, 32.0_h, 33.0_h,
600 34.0_h, 35.0_h, 36.0_h
603 std::vector<armnn::Half> outputExpectedData =
606 19.0_h, 20.0_h, 21.0_h,
609 22.0_h, 23.0_h, 24.0_h,
612 25.0_h, 26.0_h, 27.0_h,
614 10.0_h, 11.0_h, 12.0_h,
615 28.0_h, 29.0_h, 30.0_h,
617 13.0_h, 14.0_h, 15.0_h,
618 31.0_h, 32.0_h, 33.0_h,
620 16.0_h, 17.0_h, 18.0_h,
621 34.0_h, 35.0_h, 36.0_h
624 return StackTestHelper<armnn::DataType::Float16, armnn::Half, 4>(
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)
virtual std::unique_ptr< IWorkload > CreateStack(const StackQueueDescriptor &descriptor, const WorkloadInfo &info) const
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)
LayerTestResult< T, 4 > StackOutput4DAxis1TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
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)
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< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
unsigned int GetNumElements() const
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)