// // Copyright © 2017 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "DequantizeTestImpl.hpp" #include #include #include #include namespace { template LayerTestResult DequantizeTestImpl( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, const armnn::TensorInfo& inputTensorInfo, const armnn::TensorInfo& outputTensorInfo, const std::vector& inputData, const std::vector& expectedOutputData, armnn::DequantizeQueueDescriptor descriptor) { IgnoreUnused(memoryManager); std::vector actualOutput(outputTensorInfo.GetNumElements()); ARMNN_NO_DEPRECATE_WARN_BEGIN std::unique_ptr inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo); std::unique_ptr outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo); ARMNN_NO_DEPRECATE_WARN_END armnn::WorkloadInfo info; AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get()); AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get()); std::unique_ptr workload = workloadFactory.CreateWorkload(armnn::LayerType::Dequantize, descriptor, info); inputHandle->Allocate(); outputHandle->Allocate(); CopyDataToITensorHandle(inputHandle.get(), inputData.data()); ExecuteWorkload(*workload, memoryManager); CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get()); return LayerTestResult(actualOutput, expectedOutputData, outputHandle->GetShape(), outputTensorInfo.GetShape()); } template > LayerTestResult DequantizeSimpleTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { using T = armnn::ResolveType; armnn::DequantizeQueueDescriptor desc; const armnn::TensorInfo inputTensorInfo({1, 2, 2, 3}, ArmnnInputType, 0.5f, 0); const armnn::TensorInfo outputTensorInfo({1, 2, 2, 3}, ArmnnOutputType); std::vector inputData = std::vector( { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, }); std::vector expectedOutputData; for (OutType i = OutType(1); i <= OutType(12); ++i) { expectedOutputData.push_back(i); } return DequantizeTestImpl(workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, inputData, expectedOutputData, desc); } template LayerTestResult DequantizeOffsetTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { using T = armnn::ResolveType; armnn::DequantizeQueueDescriptor desc; const armnn::TensorInfo inputTensorInfo({1, 2, 2, 3}, ArmnnInputType, 0.5f, 1); const armnn::TensorInfo outputTensorInfo({1, 2, 2, 3}, armnn::DataType::Float32); std::vector inputData = std::vector( { 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, }); std::vector expectedOutputData = std::vector( { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, }); return DequantizeTestImpl(workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, inputData, expectedOutputData, desc); } } // anonymous namespace LayerTestResult DequantizeSimpleUint8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeSimpleTest(workloadFactory, memoryManager); } LayerTestResult DequantizeOffsetUint8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeOffsetTest(workloadFactory, memoryManager); } LayerTestResult DequantizeSimpleAsymmInt8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeSimpleTest(workloadFactory, memoryManager); } LayerTestResult DequantizeOffsetAsymmInt8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeOffsetTest(workloadFactory, memoryManager); } LayerTestResult DequantizeSimpleInt8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeSimpleTest(workloadFactory, memoryManager); } LayerTestResult DequantizeSimpleInt16Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeSimpleTest(workloadFactory, memoryManager); } LayerTestResult DequantizeSimpleUint8ToFp16Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeSimpleTest(workloadFactory, memoryManager); } LayerTestResult DequantizeSimpleInt8ToFp16Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeSimpleTest(workloadFactory, memoryManager); } LayerTestResult DequantizeSimpleInt16ToFp16Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return DequantizeSimpleTest(workloadFactory, memoryManager); }