9 #include <DataTypeUtils.hpp> 18 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
26 const std::vector<float>& inputData,
27 const std::vector<int32_t>& outputData,
30 std::vector<T> inputTensor = ConvertToDataType<ArmnnType>(inputData, inputTensorInfo);
31 std::vector<int32_t> actualOutput(outputTensorInfo.
GetNumElements());
33 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo);
34 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
41 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
42 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
47 inputHandle->Allocate();
48 outputHandle->Allocate();
52 workload->PostAllocationConfigure();
59 outputHandle->GetShape(),
65 template<armnn::DataType ArmnnType,
typename T>
76 if (armnn::IsQuantizedType<T>())
84 std::vector<float> inputValues({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f });
85 std::vector<int32_t> outputValues({ 3 });
87 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
89 inputTensorInfo, outputTensorInfo,
90 inputValues, outputValues, -1);
93 template<armnn::DataType ArmnnType,
typename T>
104 if (armnn::IsQuantizedType<T>())
112 std::vector<float> inputValues({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f });
113 std::vector<int32_t> outputValues({ 1 });
115 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
117 inputTensorInfo, outputTensorInfo,
118 inputValues, outputValues, 3);
121 template<armnn::DataType ArmnnType,
typename T>
132 if (armnn::IsQuantizedType<T>())
140 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
141 5.0f, 6.0f, 7.0f, 8.0f,
143 10.0f, 20.0f, 30.0f, 40.0f,
144 50.0f, 60.0f, 70.0f, 80.0f,
146 100.0f, 200.0f, 300.0f, 400.0f,
147 500.0f, 600.0f, 700.0f, 800.0f });
148 std::vector<int32_t> outputValues({ 0, 0, 0, 0,
151 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
153 inputTensorInfo, outputTensorInfo,
154 inputValues, outputValues, 1);
157 template<armnn::DataType ArmnnType,
typename T>
168 if (armnn::IsQuantizedType<T>())
176 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
177 5.0f, 6.0f, 7.0f, 8.0f,
179 10.0f, 20.0f, 30.0f, 40.0f,
180 50.0f, 60.0f, 70.0f, 80.0f,
182 100.0f, 200.0f, 300.0f, 400.0f,
183 500.0f, 600.0f, 700.0f, 800.0f });
184 std::vector<int32_t> outputValues({ 2, 2, 2, 2,
187 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
189 inputTensorInfo, outputTensorInfo,
190 inputValues, outputValues, 1);
193 template<armnn::DataType ArmnnType,
typename T>
205 if (armnn::IsQuantizedType<T>())
211 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
212 5.0f, 6.0f, 7.0f, 8.0f,
214 10.0f, 20.0f, 30.0f, 40.0f,
215 50.0f, 60.0f, 70.0f, 80.0f,
217 100.0f, 200.0f, 300.0f, 400.0f,
218 500.0f, 600.0f, 700.0f, 800.0f });
219 std::vector<int32_t> outputValues({ 1, 1, 1, 1,
223 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
225 inputTensorInfo, outputTensorInfo,
226 inputValues, outputValues, 2);
229 template<armnn::DataType ArmnnType,
typename T>
241 if (armnn::IsQuantizedType<T>())
247 std::vector<float> inputValues({ 1.0f, 2.0f, 3.0f, 4.0f,
248 5.0f, 6.0f, 7.0f, 8.0f,
250 10.0f, 20.0f, 30.0f, 40.0f,
251 50.0f, 60.0f, 70.0f, 80.0f,
253 100.0f, 200.0f, 300.0f, 400.0f,
254 500.0f, 600.0f, 700.0f, 800.0f });
255 std::vector<int32_t> outputValues({ 0, 0,
259 return ArgMinMaxTestCommon<ArmnnType>(workloadFactory, memoryManager, tensorHandleFactory,
261 inputTensorInfo, outputTensorInfo,
262 inputValues, outputValues, 3);
269 ArgMaxSimpleTest<armnn::DataType::Float32>(
275 ArgMaxSimpleTest<armnn::DataType::Float16>(
281 ArgMaxSimpleTest<armnn::DataType::QAsymmS8>(
287 ArgMaxSimpleTest<armnn::DataType::QAsymmU8>(
293 ArgMaxSimpleTest<armnn::DataType::QSymmS16>(
299 ArgMaxSimpleTest<armnn::DataType::Signed32>(
305 ArgMinSimpleTest<armnn::DataType::Float32>(
311 ArgMinSimpleTest<armnn::DataType::Float16>(
317 ArgMinSimpleTest<armnn::DataType::QAsymmS8>(
323 ArgMinSimpleTest<armnn::DataType::QAsymmU8>(
329 ArgMinSimpleTest<armnn::DataType::QSymmS16>(
335 ArgMinSimpleTest<armnn::DataType::Signed32>(
341 ArgMinChannelTest<armnn::DataType::Float32>(
347 ArgMinChannelTest<armnn::DataType::Float16>(
353 ArgMinChannelTest<armnn::DataType::QAsymmS8>(
359 ArgMinChannelTest<armnn::DataType::QAsymmU8>(
365 ArgMinChannelTest<armnn::DataType::QSymmS16>(
371 ArgMinChannelTest<armnn::DataType::Signed32>(
377 ArgMaxChannelTest<armnn::DataType::Float32>(
383 ArgMaxChannelTest<armnn::DataType::Float16>(
389 ArgMaxChannelTest<armnn::DataType::QAsymmS8>(
395 ArgMaxChannelTest<armnn::DataType::QAsymmU8>(
401 ArgMaxChannelTest<armnn::DataType::QSymmS16>(
407 ArgMaxChannelTest<armnn::DataType::Signed32>(
413 ArgMaxHeightTest<armnn::DataType::Float32>(
419 ArgMaxHeightTest<armnn::DataType::Float16>(
425 ArgMaxHeightTest<armnn::DataType::Signed32>(
431 ArgMaxHeightTest<armnn::DataType::QAsymmS8>(
437 ArgMaxHeightTest<armnn::DataType::QAsymmU8>(
443 ArgMinWidthTest<armnn::DataType::Float32>(
449 ArgMinWidthTest<armnn::DataType::Float16>(
455 ArgMinWidthTest<armnn::DataType::Signed32>(
461 ArgMinWidthTest<armnn::DataType::QAsymmS8>(
467 ArgMinWidthTest<armnn::DataType::QAsymmU8>(
const TensorShape & GetShape() const
LayerTestResult< int32_t, 3 > ArgMaxSimpleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
ArgMinMaxFunction m_Function
Specify if the function is to find Min or Max.
LayerTestResult< int32_t, 3 > ArgMaxHeightTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerDescriptor m_Parameters
LayerTestResult< int32_t, 3 > ArgMinChannelTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
void SetQuantizationScale(float scale)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
Contains information about TensorInfos of a layer.
int m_Axis
Axis to reduce across the input tensor.
void SetQuantizationOffset(int32_t offset)
LayerTestResult< int32_t, 3 > ArgMinSimpleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
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
LayerTestResult< int32_t, 3 > ArgMinWidthTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
unsigned int GetNumElements() const
LayerTestResult< int32_t, 3 > ArgMaxChannelTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)