From 1fd2c80692ed8ecefc4d8deb783564ad19eaf70c Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Tue, 16 Jun 2020 17:44:46 +0100 Subject: COMPMID-3375: Port NEActivationLayer functions/kernels to run on different tensors. Signed-off-by: Georgios Pinitas Change-Id: I98782bb73e9dc0899ffb1796aca6f99714adea94 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3343 Reviewed-by: Michalis Spyrou Comments-Addressed: Arm Jenkins Tested-by: Arm Jenkins --- src/runtime/NEON/functions/NEReshapeLayer.cpp | 42 +++++++++++++++++---------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'src/runtime/NEON/functions/NEReshapeLayer.cpp') diff --git a/src/runtime/NEON/functions/NEReshapeLayer.cpp b/src/runtime/NEON/functions/NEReshapeLayer.cpp index 680abef026..daf358e7db 100644 --- a/src/runtime/NEON/functions/NEReshapeLayer.cpp +++ b/src/runtime/NEON/functions/NEReshapeLayer.cpp @@ -44,7 +44,7 @@ void NEReshapeLayer::configure(const ITensorInfo *input, ITensorInfo *output) Status NEReshapeLayer::validate(const ITensorInfo *input, const ITensorInfo *output) { - return arm_compute::NEReshapeLayer::validate(input, output); + return arm_compute::NEReshapeLayerKernel::validate(input, output); } MemoryRequirements NEReshapeLayer::workspace() const @@ -53,32 +53,44 @@ MemoryRequirements NEReshapeLayer::workspace() const } } // namespace experimental -void NEReshapeLayer::configure(const ITensor *input, ITensor *output) +struct NEReshapeLayer::Impl { - _input = input; - _output = output; + const ITensor *src{ nullptr }; + ITensor *dst{ nullptr }; + std::unique_ptr op{ nullptr }; +}; - auto k = arm_compute::support::cpp14::make_unique(); - k->configure(input->info(), output->info()); - _kernel = std::move(k); +NEReshapeLayer::NEReshapeLayer() + : _impl(support::cpp14::make_unique()) +{ +} + +NEReshapeLayer::NEReshapeLayer(NEReshapeLayer &&) = default; + +NEReshapeLayer &NEReshapeLayer::operator=(NEReshapeLayer &&) = default; + +NEReshapeLayer::~NEReshapeLayer() = default; + +void NEReshapeLayer::configure(const ITensor *input, ITensor *output) +{ + _impl->src = input; + _impl->dst = output; + _impl->op = arm_compute::support::cpp14::make_unique(); + _impl->op->configure(input->info(), output->info()); } Status NEReshapeLayer::validate(const ITensorInfo *input, const ITensorInfo *output) { ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR(input, output); - ARM_COMPUTE_RETURN_ON_ERROR(NEReshapeLayerKernel::validate(input, output)); + ARM_COMPUTE_RETURN_ON_ERROR(experimental::NEReshapeLayer::validate(input, output)); return Status{}; } void NEReshapeLayer::run() { - InputOperatorTensors src_0 = std::make_pair(TensorType::ACL_SRC, _input); - OutputOperatorTensors dst_0 = std::make_pair(TensorType::ACL_DST, _output); - - std::vector inputs = { &src_0 }; - std::vector outputs = { &dst_0 }; - - NEScheduler::get().schedule_op(_kernel.get(), Window::DimY, inputs, outputs); + const InputTensor src{ TensorType::ACL_SRC, _impl->src }; + OutputTensor dst{ TensorType::ACL_DST, _impl->dst }; + _impl->op->run({ src }, { dst }, {}); } } // namespace arm_compute -- cgit v1.2.1