diff options
Diffstat (limited to 'src/backends/neon/workloads')
6 files changed, 104 insertions, 91 deletions
diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt index 0ad961aa86..7bde80859e 100644 --- a/src/backends/neon/workloads/CMakeLists.txt +++ b/src/backends/neon/workloads/CMakeLists.txt @@ -56,8 +56,8 @@ list(APPEND armnnNeonBackendWorkloads_sources NeonQuantizeWorkload.hpp NeonReshapeWorkload.cpp NeonReshapeWorkload.hpp - NeonResizeBilinearWorkload.cpp - NeonResizeBilinearWorkload.hpp + NeonResizeWorkload.cpp + NeonResizeWorkload.hpp NeonSoftmaxBaseWorkload.cpp NeonSoftmaxBaseWorkload.hpp NeonSoftmaxFloatWorkload.cpp diff --git a/src/backends/neon/workloads/NeonResizeBilinearWorkload.cpp b/src/backends/neon/workloads/NeonResizeBilinearWorkload.cpp deleted file mode 100644 index 6943d872e4..0000000000 --- a/src/backends/neon/workloads/NeonResizeBilinearWorkload.cpp +++ /dev/null @@ -1,59 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "NeonResizeBilinearWorkload.hpp" - -#include <aclCommon/ArmComputeUtils.hpp> -#include <aclCommon/ArmComputeTensorUtils.hpp> -#include <backendsCommon/CpuTensorHandle.hpp> -#include <neon/NeonTensorHandle.hpp> -#include <neon/NeonLayerSupport.hpp> - -using namespace armnn::armcomputetensorutils; - -namespace armnn -{ - -arm_compute::Status NeonResizeBilinearWorkloadValidate(const TensorInfo& input, const TensorInfo& output) -{ - const arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input); - const arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output); - - return arm_compute::NEScale::validate(&aclInputInfo, - &aclOutputInfo, - arm_compute::InterpolationPolicy::BILINEAR, - arm_compute::BorderMode::REPLICATE, - arm_compute::PixelValue(0.f), - arm_compute::SamplingPolicy::TOP_LEFT); -} - -NeonResizeBilinearWorkload::NeonResizeBilinearWorkload(const ResizeBilinearQueueDescriptor& descriptor, - const WorkloadInfo& info) - : BaseWorkload<ResizeBilinearQueueDescriptor>(descriptor, info) -{ - m_Data.ValidateInputsOutputs("NeonResizeBilinearWorkload", 1, 1); - - arm_compute::ITensor& input = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor(); - arm_compute::ITensor& output = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor(); - - arm_compute::DataLayout aclDataLayout = ConvertDataLayout(m_Data.m_Parameters.m_DataLayout); - input.info()->set_data_layout(aclDataLayout); - output.info()->set_data_layout(aclDataLayout); - - m_ResizeBilinearLayer.configure(&input, - &output, - arm_compute::InterpolationPolicy::BILINEAR, - arm_compute::BorderMode::REPLICATE, - arm_compute::PixelValue(0.f), - arm_compute::SamplingPolicy::TOP_LEFT); -}; - -void NeonResizeBilinearWorkload::Execute() const -{ - ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonResizeBilinearWorkload_Execute"); - m_ResizeBilinearLayer.run(); -} - -} //namespace armnn diff --git a/src/backends/neon/workloads/NeonResizeBilinearWorkload.hpp b/src/backends/neon/workloads/NeonResizeBilinearWorkload.hpp deleted file mode 100644 index 21753b3127..0000000000 --- a/src/backends/neon/workloads/NeonResizeBilinearWorkload.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include <backendsCommon/Workload.hpp> - -#include <neon/workloads/NeonWorkloadUtils.hpp> - -#include <arm_compute/runtime/NEON/functions/NEScale.h> - -namespace armnn -{ - -arm_compute::Status NeonResizeBilinearWorkloadValidate(const TensorInfo& input, const TensorInfo& output); - -class NeonResizeBilinearWorkload : public BaseWorkload<ResizeBilinearQueueDescriptor> -{ -public: - NeonResizeBilinearWorkload(const ResizeBilinearQueueDescriptor& descriptor, const WorkloadInfo& info); - void Execute() const override; - -private: - mutable arm_compute::NEScale m_ResizeBilinearLayer; -}; - -} //namespace armnn diff --git a/src/backends/neon/workloads/NeonResizeWorkload.cpp b/src/backends/neon/workloads/NeonResizeWorkload.cpp new file mode 100644 index 0000000000..a4e4a4a511 --- /dev/null +++ b/src/backends/neon/workloads/NeonResizeWorkload.cpp @@ -0,0 +1,72 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "NeonResizeWorkload.hpp" + +#include "NeonWorkloadUtils.hpp" + +#include <aclCommon/ArmComputeUtils.hpp> +#include <aclCommon/ArmComputeTensorUtils.hpp> +#include <backendsCommon/CpuTensorHandle.hpp> +#include <neon/NeonTensorHandle.hpp> + +using namespace armnn::armcomputetensorutils; + +namespace armnn +{ + +arm_compute::Status NeonResizeWorkloadValidate(const TensorInfo& input, + const TensorInfo& output, + const ResizeDescriptor& descriptor) +{ + arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input); + arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output); + + arm_compute::DataLayout aclDataLayout = ConvertDataLayout(descriptor.m_DataLayout); + aclInputInfo.set_data_layout(aclDataLayout); + aclOutputInfo.set_data_layout(aclDataLayout); + + arm_compute::InterpolationPolicy aclInterpolationPolicy = + ConvertResizeMethodToAclInterpolationPolicy(descriptor.m_Method); + + return arm_compute::NEScale::validate(&aclInputInfo, + &aclOutputInfo, + aclInterpolationPolicy, + arm_compute::BorderMode::REPLICATE, + arm_compute::PixelValue(0.f), + arm_compute::SamplingPolicy::TOP_LEFT); +} + +NeonResizeWorkload::NeonResizeWorkload(const ResizeQueueDescriptor& descriptor, + const WorkloadInfo& info) + : BaseWorkload<ResizeQueueDescriptor>(descriptor, info) +{ + m_Data.ValidateInputsOutputs("NeonResizeWorkload", 1, 1); + + arm_compute::ITensor& input = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor(); + arm_compute::ITensor& output = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor(); + + arm_compute::DataLayout aclDataLayout = ConvertDataLayout(m_Data.m_Parameters.m_DataLayout); + input.info()->set_data_layout(aclDataLayout); + output.info()->set_data_layout(aclDataLayout); + + arm_compute::InterpolationPolicy aclInterpolationPolicy = + ConvertResizeMethodToAclInterpolationPolicy(descriptor.m_Parameters.m_Method); + + m_ResizeLayer.configure(&input, + &output, + aclInterpolationPolicy, + arm_compute::BorderMode::REPLICATE, + arm_compute::PixelValue(0.f), + arm_compute::SamplingPolicy::TOP_LEFT); +}; + +void NeonResizeWorkload::Execute() const +{ + ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonResizeWorkload_Execute"); + m_ResizeLayer.run(); +} + +} //namespace armnn diff --git a/src/backends/neon/workloads/NeonResizeWorkload.hpp b/src/backends/neon/workloads/NeonResizeWorkload.hpp new file mode 100644 index 0000000000..69995c6311 --- /dev/null +++ b/src/backends/neon/workloads/NeonResizeWorkload.hpp @@ -0,0 +1,29 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <backendsCommon/Workload.hpp> + +#include <arm_compute/runtime/NEON/functions/NEScale.h> + +namespace armnn +{ + +arm_compute::Status NeonResizeWorkloadValidate(const TensorInfo& input, + const TensorInfo& output, + const ResizeDescriptor& descriptor); + +class NeonResizeWorkload : public BaseWorkload<ResizeQueueDescriptor> +{ +public: + NeonResizeWorkload(const ResizeQueueDescriptor& descriptor, const WorkloadInfo& info); + void Execute() const override; + +private: + mutable arm_compute::NEScale m_ResizeLayer; +}; + +} //namespace armnn diff --git a/src/backends/neon/workloads/NeonWorkloads.hpp b/src/backends/neon/workloads/NeonWorkloads.hpp index a9604a160c..c5f4a54b77 100644 --- a/src/backends/neon/workloads/NeonWorkloads.hpp +++ b/src/backends/neon/workloads/NeonWorkloads.hpp @@ -30,7 +30,7 @@ #include "NeonPreluWorkload.hpp" #include "NeonQuantizeWorkload.hpp" #include "NeonReshapeWorkload.hpp" -#include "NeonResizeBilinearWorkload.hpp" +#include "NeonResizeWorkload.hpp" #include "NeonSoftmaxFloatWorkload.hpp" #include "NeonSoftmaxUint8Workload.hpp" #include "NeonSpaceToDepthWorkload.hpp" |