aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/NEON/functions/NEPoolingLayer.cpp
diff options
context:
space:
mode:
authorMichalis Spyrou <michalis.spyrou@arm.com>2020-10-21 00:04:14 +0100
committerMichalis Spyrou <michalis.spyrou@arm.com>2020-11-03 15:10:47 +0000
commitebcebf1dee7f8314976b1e0cabd62b4cf893d765 (patch)
tree95d3e691a0e88a3e213a1d30446a9224497f2055 /src/runtime/NEON/functions/NEPoolingLayer.cpp
parentda4b1b2055d96aaf73704eb9b0b82d74dc2d699c (diff)
downloadComputeLibrary-ebcebf1dee7f8314976b1e0cabd62b4cf893d765.tar.gz
COMPMID-3638: Move NEON kernels
Signed-off-by: Michalis Spyrou <michalis.spyrou@arm.com> Change-Id: Ieed3e4bc8be7fef80c90c5094599b477a56fc473 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4285 Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/NEON/functions/NEPoolingLayer.cpp')
-rw-r--r--src/runtime/NEON/functions/NEPoolingLayer.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/runtime/NEON/functions/NEPoolingLayer.cpp b/src/runtime/NEON/functions/NEPoolingLayer.cpp
index 81bd00d44d..12ac8d6d7d 100644
--- a/src/runtime/NEON/functions/NEPoolingLayer.cpp
+++ b/src/runtime/NEON/functions/NEPoolingLayer.cpp
@@ -25,8 +25,13 @@
#include "arm_compute/core/ITensor.h"
#include "arm_compute/runtime/NEON/NEScheduler.h"
+#include "src/core/NEON/kernels/NEFillBorderKernel.h"
+#include "src/core/NEON/kernels/NEPoolingLayerKernel.h"
+#include "support/MemorySupport.h"
-using namespace arm_compute;
+namespace arm_compute
+{
+NEPoolingLayer::~NEPoolingLayer() = default;
NEPoolingLayer::NEPoolingLayer()
: _pooling_layer_kernel(), _border_handler(), _is_global_pooling_layer(false), _data_layout(DataLayout::NCHW)
@@ -42,7 +47,8 @@ void NEPoolingLayer::configure(ITensor *input, ITensor *output, const PoolingLay
_data_layout = pool_info.data_layout == DataLayout::UNKNOWN ? input->info()->data_layout() : pool_info.data_layout;
// Configure pooling kernel
- _pooling_layer_kernel.configure(input, output, pool_info, indices);
+ _pooling_layer_kernel = arm_compute::support::cpp14::make_unique<NEPoolingLayerKernel>();
+ _pooling_layer_kernel->configure(input, output, pool_info, indices);
switch(_data_layout)
{
@@ -55,7 +61,8 @@ void NEPoolingLayer::configure(ITensor *input, ITensor *output, const PoolingLay
{
zero_value = PixelValue(0, input->info()->data_type(), input->info()->quantization_info());
}
- _border_handler.configure(input, _pooling_layer_kernel.border_size(), border_mode, zero_value);
+ _border_handler = arm_compute::support::cpp14::make_unique<NEFillBorderKernel>();
+ _border_handler->configure(input, _pooling_layer_kernel->border_size(), border_mode, zero_value);
break;
}
case DataLayout::NHWC:
@@ -76,16 +83,18 @@ void NEPoolingLayer::run()
{
case DataLayout::NCHW:
// Fill border
- NEScheduler::get().schedule(&_border_handler, Window::DimY);
+ NEScheduler::get().schedule(_border_handler.get(), Window::DimY);
// Run pooling layer
- NEScheduler::get().schedule(&_pooling_layer_kernel, _is_global_pooling_layer ? Window::DimZ : Window::DimY);
+ NEScheduler::get().schedule(_pooling_layer_kernel.get(), _is_global_pooling_layer ? Window::DimZ : Window::DimY);
break;
case DataLayout::NHWC:
// Run pooling layer
- NEScheduler::get().schedule(&_pooling_layer_kernel, Window::DimX);
+ NEScheduler::get().schedule(_pooling_layer_kernel.get(), Window::DimX);
break;
default:
ARM_COMPUTE_ERROR("Data layout not supported");
}
}
+
+} // namespace arm_compute