aboutsummaryrefslogtreecommitdiff
path: root/src/core/NEON/kernels/NEPriorBoxLayerKernel.cpp
diff options
context:
space:
mode:
authorMichalis Spyrou <michalis.spyrou@arm.com>2020-02-27 15:06:10 +0000
committerMichalis Spyrou <michalis.spyrou@arm.com>2020-02-27 16:10:15 +0000
commit83dea96c2e041a6f0d03e0c9d8b53209ef2c7207 (patch)
treea18edcf6bc4ff52a2cfecb5f3053cff9ebccf5ff /src/core/NEON/kernels/NEPriorBoxLayerKernel.cpp
parent4de2d59419bbbeefccdaccb563d3157d4c88db68 (diff)
downloadComputeLibrary-83dea96c2e041a6f0d03e0c9d8b53209ef2c7207.tar.gz
COMPMID-3142: Remove padding from NEPriorBoxLayer
Change-Id: Ia7095449099c06bda96f1a212b44eea8cd5d5dca Signed-off-by: Michalis Spyrou <michalis.spyrou@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2800 Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/NEPriorBoxLayerKernel.cpp')
-rw-r--r--src/core/NEON/kernels/NEPriorBoxLayerKernel.cpp28
1 files changed, 8 insertions, 20 deletions
diff --git a/src/core/NEON/kernels/NEPriorBoxLayerKernel.cpp b/src/core/NEON/kernels/NEPriorBoxLayerKernel.cpp
index 365fc83fd0..d830d0db67 100644
--- a/src/core/NEON/kernels/NEPriorBoxLayerKernel.cpp
+++ b/src/core/NEON/kernels/NEPriorBoxLayerKernel.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2020 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -72,20 +72,6 @@ Status validate_arguments(const ITensorInfo *input1, const ITensorInfo *input2,
return Status{};
}
-
-std::pair<Status, Window> validate_and_configure_window(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output, const PriorBoxLayerInfo &info)
-{
- ARM_COMPUTE_UNUSED(input1, input2);
-
- const int num_priors = info.aspect_ratios().size() * info.min_sizes().size() + info.max_sizes().size();
- const unsigned int num_elems_processed_per_iteration = 4 * num_priors;
- Window win = calculate_max_window(*output, Steps(num_elems_processed_per_iteration));
- AccessWindowHorizontal output_access(output, 0, num_elems_processed_per_iteration);
- bool window_changed = update_window_and_padding(win, output_access);
-
- Status err = (window_changed) ? ARM_COMPUTE_CREATE_ERROR(ErrorCode::RUNTIME_ERROR, "Insufficient Padding!") : Status{};
- return std::make_pair(err, win);
-}
} // namespace
NEPriorBoxLayerKernel::NEPriorBoxLayerKernel()
@@ -221,17 +207,19 @@ void NEPriorBoxLayerKernel::configure(const ITensor *input1, const ITensor *inpu
_output = output;
// Configure kernel window
- auto win_config = validate_and_configure_window(input1->info(), input2->info(), output->info(), info);
- ARM_COMPUTE_ERROR_THROW_ON(win_config.first);
- INEKernel::configure(win_config.second);
+ const int num_priors = info.aspect_ratios().size() * info.min_sizes().size() + info.max_sizes().size();
+ Window win = calculate_max_window(*output->info(), Steps(num_priors * 4));
+ Coordinates coord;
+ coord.set_num_dimensions(output->info()->num_dimensions());
+ output->info()->set_valid_region(ValidRegion(coord, output->info()->tensor_shape()));
+
+ INEKernel::configure(win);
}
Status NEPriorBoxLayerKernel::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const PriorBoxLayerInfo &info)
{
ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR(input1, input2, output);
ARM_COMPUTE_RETURN_ON_ERROR(validate_arguments(input1, input2, output, info));
- ARM_COMPUTE_RETURN_ON_ERROR(validate_and_configure_window(input1->clone().get(), input2->clone().get(), output->clone().get(), info)
- .first);
return Status{};
}