From 5caf907efc31e774f8afde54b17a5596477772f6 Mon Sep 17 00:00:00 2001 From: Aron Virginas-Tar Date: Wed, 14 Nov 2018 18:35:18 +0000 Subject: IVGCVSW-2136: Remove memory management methods from workload factories Change-Id: Idc0f94590566ac362f7e1d1999361d025cc2f67a --- .../backendsCommon/test/Conv2dTestImpl.hpp | 182 +++++++++++---------- 1 file changed, 98 insertions(+), 84 deletions(-) (limited to 'src/backends/backendsCommon/test/Conv2dTestImpl.hpp') diff --git a/src/backends/backendsCommon/test/Conv2dTestImpl.hpp b/src/backends/backendsCommon/test/Conv2dTestImpl.hpp index 03becab73f..d99b7f7fa3 100755 --- a/src/backends/backendsCommon/test/Conv2dTestImpl.hpp +++ b/src/backends/backendsCommon/test/Conv2dTestImpl.hpp @@ -4,6 +4,8 @@ // #pragma once +#include "WorkloadTestUtils.hpp" + #include #include #include @@ -13,6 +15,7 @@ #include "QuantizeHelper.hpp" #include +#include #include #include "Permute.hpp" #include @@ -63,18 +66,20 @@ void ApplyBias(std::vector& v, float vScale, int32_t vOffset, } template -LayerTestResult SimpleConvolution2dTestImpl(armnn::IWorkloadFactory& workloadFactory, - const boost::multi_array& originalInput, - const boost::multi_array& originalKernel, - const boost::multi_array& bias, - const boost::multi_array& originalOutputExpected, - float qScale, - int32_t qOffset, - const armnn::DataLayoutIndexed& layout = armnn::DataLayout::NCHW, - uint32_t padLeft = 0, - uint32_t padTop = 0, - uint32_t padRight = 0, - uint32_t padBottom = 0) +LayerTestResult SimpleConvolution2dTestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + const boost::multi_array& originalInput, + const boost::multi_array& originalKernel, + const boost::multi_array& bias, + const boost::multi_array& originalOutputExpected, + float qScale, + int32_t qOffset, + const armnn::DataLayoutIndexed& layout = armnn::DataLayout::NCHW, + uint32_t padLeft = 0, + uint32_t padTop = 0, + uint32_t padRight = 0, + uint32_t padBottom = 0) { unsigned int inputHeight = boost::numeric_cast(originalInput.shape()[2]); unsigned int inputWidth = boost::numeric_cast(originalInput.shape()[3]); @@ -213,9 +218,7 @@ LayerTestResult SimpleConvolution2dTestImpl(armnn::IWorkloadFactory& workl CopyDataToITensorHandle(inputHandle.get(), &batchedInput[0][0][0][0]); - workloadFactory.Acquire(); - workload->Execute(); - workloadFactory.Release(); + ExecuteWorkload(*workload, memoryManager); CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get()); @@ -223,20 +226,22 @@ LayerTestResult SimpleConvolution2dTestImpl(armnn::IWorkloadFactory& workl } template -LayerTestResult SimpleConvolution2dNhwcTestImpl(armnn::IWorkloadFactory& workloadFactory, - const boost::multi_array& input, - const boost::multi_array& kernel, - const boost::multi_array& bias, - const boost::multi_array& outputExpected, - armnn::DataLayout dataLayout, - float qScale, - int32_t qOffset, - uint32_t padLeft = 1, - uint32_t padTop = 1, - uint32_t padRight = 1, - uint32_t padBottom = 1, - uint32_t strideX = 1, - uint32_t strideY = 1) +LayerTestResult SimpleConvolution2dNhwcTestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + const boost::multi_array& input, + const boost::multi_array& kernel, + const boost::multi_array& bias, + const boost::multi_array& outputExpected, + armnn::DataLayout dataLayout, + float qScale, + int32_t qOffset, + uint32_t padLeft = 1, + uint32_t padTop = 1, + uint32_t padRight = 1, + uint32_t padBottom = 1, + uint32_t strideX = 1, + uint32_t strideY = 1) { unsigned int inputNum = boost::numeric_cast(input.shape()[0]); unsigned int inputChannels = boost::numeric_cast(input.shape()[3]); @@ -305,9 +310,7 @@ LayerTestResult SimpleConvolution2dNhwcTestImpl(armnn::IWorkloadFactory& w CopyDataToITensorHandle(inputHandle.get(), &batchedInput[0][0][0][0]); - workloadFactory.Acquire(); - workload->Execute(); - workloadFactory.Release(); + ExecuteWorkload(*workload, memoryManager); CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get()); @@ -315,20 +318,22 @@ LayerTestResult SimpleConvolution2dNhwcTestImpl(armnn::IWorkloadFactory& w } template -LayerTestResult DepthwiseConvolution2dAsymmetricTestImpl(armnn::IWorkloadFactory& workloadFactory, - const boost::multi_array& input, - const boost::multi_array& originalKernel, - const boost::multi_array& bias, - const boost::multi_array& outputExpected, - float qScale, - int32_t qOffset, - const armnn::DataLayoutIndexed& layout, - uint32_t padLeft = 0, - uint32_t padTop = 0, - uint32_t padRight = 0, - uint32_t padBottom = 0, - uint32_t strideX = 1, - uint32_t strideY = 1) +LayerTestResult DepthwiseConvolution2dAsymmetricTestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + const boost::multi_array& input, + const boost::multi_array& originalKernel, + const boost::multi_array& bias, + const boost::multi_array& outputExpected, + float qScale, + int32_t qOffset, + const armnn::DataLayoutIndexed& layout, + uint32_t padLeft = 0, + uint32_t padTop = 0, + uint32_t padRight = 0, + uint32_t padBottom = 0, + uint32_t strideX = 1, + uint32_t strideY = 1) { unsigned int inputNum = boost::numeric_cast(input.shape()[0]); unsigned int inputChannels = boost::numeric_cast(input.shape()[1]); @@ -455,11 +460,13 @@ LayerTestResult DepthwiseConvolution2dAsymmetricTestImpl(armnn::IWorkloadF } template -LayerTestResult DepthwiseConvolution2dDepthMul1TestImpl(armnn::IWorkloadFactory& workloadFactory, - float qScale, - int32_t qOffset, - bool biasEnabled, - const armnn::DataLayoutIndexed& layout) +LayerTestResult DepthwiseConvolution2dDepthMul1TestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + float qScale, + int32_t qOffset, + bool biasEnabled, + const armnn::DataLayoutIndexed& layout) { unsigned int inputHeight = 3; unsigned int inputWidth = 3; @@ -598,11 +605,13 @@ LayerTestResult DepthwiseConvolution2dDepthMul1TestImpl(armnn::IWorkloadFa } template -LayerTestResult DepthwiseConvolution2dTestImpl(armnn::IWorkloadFactory& workloadFactory, - float qScale, - int32_t qOffset, - bool biasEnabled, - const armnn::DataLayoutIndexed& layout) +LayerTestResult DepthwiseConvolution2dTestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + float qScale, + int32_t qOffset, + bool biasEnabled, + const armnn::DataLayoutIndexed& layout) { unsigned int depthMultiplier = 2; @@ -799,19 +808,21 @@ LayerTestResult DepthwiseConvolution2dTestImpl(armnn::IWorkloadFactory& wo } template -LayerTestResult DepthwiseConvolution2dNhwcTestImpl(armnn::IWorkloadFactory& workloadFactory, - const boost::multi_array& input, - const boost::multi_array& kernel, - const boost::multi_array& bias, - const boost::multi_array& outputExpected, - float qScale, - int32_t qOffset, - uint32_t padLeft = 0, - uint32_t padTop = 0, - uint32_t padRight = 0, - uint32_t padBottom = 0, - uint32_t strideX = 1, - uint32_t strideY = 1) +LayerTestResult DepthwiseConvolution2dNhwcTestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + const boost::multi_array& input, + const boost::multi_array& kernel, + const boost::multi_array& bias, + const boost::multi_array& outputExpected, + float qScale, + int32_t qOffset, + uint32_t padLeft = 0, + uint32_t padTop = 0, + uint32_t padRight = 0, + uint32_t padBottom = 0, + uint32_t strideX = 1, + uint32_t strideY = 1) { unsigned int inputNum = boost::numeric_cast(input.shape()[0]); unsigned int inputChannels = boost::numeric_cast(input.shape()[3]); @@ -898,10 +909,12 @@ LayerTestResult DepthwiseConvolution2dNhwcTestImpl(armnn::IWorkloadFactory } template -LayerTestResult Convolution1dTestImpl(armnn::IWorkloadFactory& workloadFactory, - float qScale, - int32_t qOffset, - bool biasEnabled) +LayerTestResult Convolution1dTestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + float qScale, + int32_t qOffset, + bool biasEnabled) { using B = typename FullyConnectedBiasTypeForInputType::Type; @@ -1005,9 +1018,7 @@ LayerTestResult Convolution1dTestImpl(armnn::IWorkloadFactory& workloadFact CopyDataToITensorHandle(inputHandle.get(), inputData.data()); - workloadFactory.Acquire(); - workload->Execute(); - workloadFactory.Release(); + ExecuteWorkload(*workload, memoryManager); // Output LayerTestResult ret(outputInfo); @@ -1019,8 +1030,10 @@ LayerTestResult Convolution1dTestImpl(armnn::IWorkloadFactory& workloadFact template -LayerTestResult CompareConvolution2dTestImpl(armnn::IWorkloadFactory& workloadFactory, - armnn::IWorkloadFactory& refWorkloadFactory) +LayerTestResult CompareConvolution2dTestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + armnn::IWorkloadFactory& refWorkloadFactory) { unsigned int inputHeight = 8; unsigned int inputWidth = 16; @@ -1104,9 +1117,7 @@ LayerTestResult CompareConvolution2dTestImpl(armnn::IWorkloadFactory& workl CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]); CopyDataToITensorHandle(inputHandleRef.get(), &input[0][0][0][0]); - workloadFactory.Acquire(); - workload->Execute(); - workloadFactory.Release(); + ExecuteWorkload(*workload, memoryManager); workloadRef->Execute(); @@ -1117,9 +1128,11 @@ LayerTestResult CompareConvolution2dTestImpl(armnn::IWorkloadFactory& workl } template -LayerTestResult CompareDepthwiseConvolution2dTestImpl(armnn::IWorkloadFactory& workloadFactory, - armnn::IWorkloadFactory& refWorkloadFactory, - const armnn::DataLayoutIndexed& layout) +LayerTestResult CompareDepthwiseConvolution2dTestImpl( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + armnn::IWorkloadFactory& refWorkloadFactory, + const armnn::DataLayoutIndexed& layout) { unsigned int inputHeight = 8; unsigned int inputWidth = 16; @@ -1229,6 +1242,7 @@ LayerTestResult CompareDepthwiseConvolution2dTestImpl(armnn::IWorkloadFact CopyDataToITensorHandle(inputHandleRef.get(), &input[0][0][0][0]); workload->Execute(); + workloadRef->Execute(); CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get()); -- cgit v1.2.1