20 template<
typename T, std::
size_t NumDims>
26 std::vector<float>& inputData,
27 std::vector<float>& expectedOutputData,
29 const float qScale = 1.0f,
30 const int qOffset = 0)
32 boost::ignore_unused(memoryManager);
33 if(armnn::IsQuantizedType<T>())
42 boost::multi_array<T, NumDims> input =
43 MakeTensor<T, NumDims>(inputInfo, armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset));
46 result.outputExpected =
47 MakeTensor<T, NumDims>(outputInfo, armnnUtils::QuantizedVector<T>(expectedOutputData, qScale, qOffset));
49 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputInfo);
50 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputInfo);
53 AddInputToWorkload(descriptor, info, inputInfo, inputHandle.get());
54 AddOutputToWorkload(descriptor, info, outputInfo, outputHandle.get());
56 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateSlice(descriptor, info);
58 inputHandle->Allocate();
59 outputHandle->Allocate();
63 ExecuteWorkload(*workload, memoryManager);
70 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
84 std::vector<float> input =
86 0.f, 1.f, 2.f, 3.f, 4.f,
87 5.f, 6.f, 7.f, 8.f, 9.f,
88 10.f, 11.f, 12.f, 13.f, 14.f,
90 15.f, 16.f, 17.f, 18.f, 19.f,
91 20.f, 21.f, 22.f, 23.f, 24.f,
92 25.f, 26.f, 27.f, 28.f, 29.f,
95 30.f, 31.f, 32.f, 33.f, 34.f,
96 35.f, 36.f, 37.f, 38.f, 39.f,
97 40.f, 41.f, 42.f, 43.f, 44.f,
99 45.f, 46.f, 47.f, 48.f, 49.f,
100 50.f, 51.f, 52.f, 53.f, 54.f,
101 55.f, 56.f, 57.f, 58.f, 59.f,
104 60.f, 61.f, 62.f, 63.f, 64.f,
105 65.f, 66.f, 67.f, 68.f, 69.f,
106 70.f, 71.f, 72.f, 73.f, 74.f,
108 75.f, 76.f, 77.f, 78.f, 79.f,
109 80.f, 81.f, 82.f, 83.f, 84.f,
110 85.f, 86.f, 87.f, 88.f, 89.f
113 std::vector<float> expectedOutput =
123 return SliceTestImpl<T, 4>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
126 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
140 std::vector<float> input =
142 0.f, 1.f, 2.f, 3.f, 4.f,
143 5.f, 6.f, 7.f, 8.f, 9.f,
144 10.f, 11.f, 12.f, 13.f, 14.f,
146 15.f, 16.f, 17.f, 18.f, 19.f,
147 20.f, 21.f, 22.f, 23.f, 24.f,
148 25.f, 26.f, 27.f, 28.f, 29.f,
151 std::vector<float> expectedOutput =
157 return SliceTestImpl<T, 3>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
160 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
174 std::vector<float> input =
176 0.f, 1.f, 2.f, 3.f, 4.f,
177 5.f, 6.f, 7.f, 8.f, 9.f,
178 10.f, 11.f, 12.f, 13.f, 14.f
181 std::vector<float> expectedOutput =
187 return SliceTestImpl<T, 2>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
190 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
204 std::vector<float> input =
206 0.f, 1.f, 2.f, 3.f, 4.f
209 std::vector<float> expectedOutput =
214 return SliceTestImpl<T, 1>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
223 return Slice4dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
229 return Slice3dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
235 return Slice2dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
241 return Slice1dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
248 return Slice4dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
254 return Slice3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
260 return Slice2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
266 return Slice1dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
273 return Slice4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
279 return Slice3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
285 return Slice2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
291 return Slice1dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
LayerTestResult< float, 3 > Slice3dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 3 > Slice3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 3 > Slice3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerDescriptor m_Parameters
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
LayerTestResult< uint8_t, 2 > Slice2dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< uint8_t, 1 > Slice1dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
std::vector< unsigned int > m_Begin
Beginning indices of the slice in each dimension.
LayerTestResult< float, 2 > Slice2dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 4 > Slice4dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > Slice4dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 2 > Slice2dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void SetQuantizationScale(float scale)
std::vector< unsigned int > m_Size
Size of the slice in each dimension.
virtual std::unique_ptr< IWorkload > CreateSlice(const SliceQueueDescriptor &descriptor, const WorkloadInfo &info) const
LayerTestResult< float, 4 > Slice4dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 1 > Slice1dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void SetQuantizationOffset(int32_t offset)
LayerTestResult< int16_t, 1 > Slice1dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)