diff options
Diffstat (limited to 'src/backends/neon/workloads')
-rw-r--r-- | src/backends/neon/workloads/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonFillWorkload.cpp | 38 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonFillWorkload.hpp | 25 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonWorkloads.hpp | 1 |
4 files changed, 66 insertions, 0 deletions
diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt index 685d75be12..e3b74f665f 100644 --- a/src/backends/neon/workloads/CMakeLists.txt +++ b/src/backends/neon/workloads/CMakeLists.txt @@ -42,6 +42,8 @@ list(APPEND armnnNeonBackendWorkloads_sources NeonDetectionPostProcessWorkload.hpp NeonExpWorkload.cpp NeonExpWorkload.hpp + NeonFillWorkload.cpp + NeonFillWorkload.hpp NeonFloorFloatWorkload.cpp NeonFloorFloatWorkload.hpp NeonFullyConnectedWorkload.cpp diff --git a/src/backends/neon/workloads/NeonFillWorkload.cpp b/src/backends/neon/workloads/NeonFillWorkload.cpp new file mode 100644 index 0000000000..5965d2000c --- /dev/null +++ b/src/backends/neon/workloads/NeonFillWorkload.cpp @@ -0,0 +1,38 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "NeonFillWorkload.hpp" + +#include <neon/NeonTensorHandle.hpp> +#include <aclCommon/ArmComputeTensorUtils.hpp> +#include <arm_compute/core/Types.h> +#include <arm_compute/runtime/NEON/functions/NEFill.h> + +#include "NeonWorkloadUtils.hpp" + +namespace armnn +{ +using namespace armcomputetensorutils; + +NeonFillWorkload::NeonFillWorkload(const FillQueueDescriptor& descriptor, const WorkloadInfo& info) + : BaseWorkload<FillQueueDescriptor>(descriptor, info) +{ + m_Data.ValidateInputsOutputs("NeonFillWorkload", 1, 1); + + arm_compute::ITensor& output = static_cast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor(); + arm_compute::PixelValue pixelValue = GetPixelValue(output, descriptor.m_Parameters.m_Value); + + auto layer = std::make_unique<arm_compute::NEFill>(); + layer->configure(&output, pixelValue); + m_Layer.reset(layer.release()); +} + +void NeonFillWorkload::Execute() const +{ + ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonFillWorkload_Execute"); + m_Layer->run(); +} + +} // namespace armnn diff --git a/src/backends/neon/workloads/NeonFillWorkload.hpp b/src/backends/neon/workloads/NeonFillWorkload.hpp new file mode 100644 index 0000000000..40e4aa68c4 --- /dev/null +++ b/src/backends/neon/workloads/NeonFillWorkload.hpp @@ -0,0 +1,25 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <backendsCommon/WorkloadData.hpp> +#include <backendsCommon/Workload.hpp> +#include <arm_compute/runtime/IFunction.h> +#include <arm_compute/core/Error.h> + +namespace armnn { + +class NeonFillWorkload : public BaseWorkload<FillQueueDescriptor> +{ +public: + NeonFillWorkload(const FillQueueDescriptor& descriptor, const WorkloadInfo& info); + void Execute() const override; + +private: + std::unique_ptr<arm_compute::IFunction> m_Layer; +}; + +} //namespace armnn diff --git a/src/backends/neon/workloads/NeonWorkloads.hpp b/src/backends/neon/workloads/NeonWorkloads.hpp index 243f5a46ee..c1bc4cca29 100644 --- a/src/backends/neon/workloads/NeonWorkloads.hpp +++ b/src/backends/neon/workloads/NeonWorkloads.hpp @@ -24,6 +24,7 @@ #include "NeonDetectionPostProcessWorkload.hpp" #include "NeonDivisionWorkload.hpp" #include "NeonExpWorkload.hpp" +#include "NeonFillWorkload.hpp" #include "NeonFloorFloatWorkload.hpp" #include "NeonFullyConnectedWorkload.hpp" #include "NeonGatherWorkload.hpp" |