aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiorgio Arena <giorgio.arena@arm.com>2017-12-01 12:16:25 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:41:58 +0000
commitf6a43c576e4eb731e5e0fa70ce4a0d3bd6a01a61 (patch)
tree817822476e821e49dddf7179c4854c0ac6aa20de
parent5a7e776eee2e9147eab12631f5717847fb6cac5c (diff)
downloadComputeLibrary-f6a43c576e4eb731e5e0fa70ce4a0d3bd6a01a61.tar.gz
COMPMID-617 CL window validation fixes
Change-Id: I479dc1bd3bf9be641cb89cea5085151ba464f798 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/111471 Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Tested-by: BSG Visual Compute Jenkins server to access repositories on http://mpd-gerrit.cambridge.arm.com <bsgcomp@arm.com>
-rw-r--r--src/core/CL/kernels/CLActivationLayerKernel.cpp3
-rw-r--r--src/core/CL/kernels/CLArithmeticAdditionKernel.cpp2
-rw-r--r--src/core/CL/kernels/CLArithmeticSubtractionKernel.cpp2
-rw-r--r--src/core/CL/kernels/CLBatchNormalizationLayerKernel.cpp12
-rw-r--r--src/core/CL/kernels/CLNormalizationLayerKernel.cpp7
-rw-r--r--src/core/CL/kernels/CLPixelWiseMultiplicationKernel.cpp4
-rw-r--r--src/core/CL/kernels/CLPoolingLayerKernel.cpp2
7 files changed, 20 insertions, 12 deletions
diff --git a/src/core/CL/kernels/CLActivationLayerKernel.cpp b/src/core/CL/kernels/CLActivationLayerKernel.cpp
index b137184c91..0f7003a38c 100644
--- a/src/core/CL/kernels/CLActivationLayerKernel.cpp
+++ b/src/core/CL/kernels/CLActivationLayerKernel.cpp
@@ -106,13 +106,12 @@ void CLActivationLayerKernel::configure(ICLTensor *input, ICLTensor *output, Act
if(output != nullptr)
{
- ARM_COMPUTE_ERROR_ON_NULLPTR(input->info(), output->info());
// Output auto inizialitation if not yet initialized
auto_init_if_empty(*output->info(),
*input->info()->clone());
}
- ARM_COMPUTE_ERROR_THROW_ON(CLActivationLayerKernel::validate(input->info(), (output != nullptr) ? output->info() : nullptr, act_info));
+ ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input->info(), (output != nullptr) ? output->info() : nullptr, act_info));
const unsigned int num_elems_processed_per_iteration = 16 / input->info()->element_size();
const DataType dt = input->info()->data_type();
diff --git a/src/core/CL/kernels/CLArithmeticAdditionKernel.cpp b/src/core/CL/kernels/CLArithmeticAdditionKernel.cpp
index 831389e3b6..e846a2bc3f 100644
--- a/src/core/CL/kernels/CLArithmeticAdditionKernel.cpp
+++ b/src/core/CL/kernels/CLArithmeticAdditionKernel.cpp
@@ -113,7 +113,7 @@ void CLArithmeticAdditionKernel::configure(const ICLTensor *input1, const ICLTen
}
}
- ARM_COMPUTE_ERROR_THROW_ON(CLArithmeticAdditionKernel::validate(input1->info(), input2->info(), output->info(), policy));
+ ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input1->info(), input2->info(), output->info(), policy));
_input1 = input1;
_input2 = input2;
diff --git a/src/core/CL/kernels/CLArithmeticSubtractionKernel.cpp b/src/core/CL/kernels/CLArithmeticSubtractionKernel.cpp
index 5603451ca0..5cadd2a6de 100644
--- a/src/core/CL/kernels/CLArithmeticSubtractionKernel.cpp
+++ b/src/core/CL/kernels/CLArithmeticSubtractionKernel.cpp
@@ -105,7 +105,7 @@ void CLArithmeticSubtractionKernel::configure(const ICLTensor *input1, const ICL
}
}
- ARM_COMPUTE_ERROR_THROW_ON(CLArithmeticSubtractionKernel::validate(input1->info(), input2->info(), output->info(), policy));
+ ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input1->info(), input2->info(), output->info(), policy));
_input1 = input1;
_input2 = input2;
diff --git a/src/core/CL/kernels/CLBatchNormalizationLayerKernel.cpp b/src/core/CL/kernels/CLBatchNormalizationLayerKernel.cpp
index 7426cad7ba..62a203c97b 100644
--- a/src/core/CL/kernels/CLBatchNormalizationLayerKernel.cpp
+++ b/src/core/CL/kernels/CLBatchNormalizationLayerKernel.cpp
@@ -63,6 +63,12 @@ Error validate_arguments(const ITensorInfo *input, const ITensorInfo *output,
std::pair<Error, Window> validate_and_configure_window(ITensorInfo *input, ITensorInfo *output)
{
+ if(output != nullptr)
+ {
+ // Output tensor auto initialization if not yet initialized
+ auto_init_if_empty(*output, *input->clone());
+ }
+
const unsigned int num_elems_processed_per_iteration = 16 / input->element_size();
// Configure kernel window
@@ -108,11 +114,11 @@ void CLBatchNormalizationLayerKernel::configure(ICLTensor *input, ICLTensor *out
{
ARM_COMPUTE_ERROR_ON_NULLPTR(input->info(), output->info());
// Output tensor auto initialization if not yet initialized
- auto_init_if_empty(*output->info(), input->info()->tensor_shape(), 1, input->info()->data_type(), input->info()->fixed_point_position());
+ auto_init_if_empty(*output->info(), *input->info()->clone());
}
- ARM_COMPUTE_ERROR_THROW_ON(CLBatchNormalizationLayerKernel::validate(input->info(), (output != nullptr) ? output->info() : nullptr,
- mean->info(), var->info(), beta->info(), gamma->info(), epsilon));
+ ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input->info(), (output != nullptr) ? output->info() : nullptr,
+ mean->info(), var->info(), beta->info(), gamma->info(), epsilon));
const unsigned int num_elems_processed_per_iteration = 16 / input->info()->element_size();
diff --git a/src/core/CL/kernels/CLNormalizationLayerKernel.cpp b/src/core/CL/kernels/CLNormalizationLayerKernel.cpp
index c46b5987b7..25c5a7df77 100644
--- a/src/core/CL/kernels/CLNormalizationLayerKernel.cpp
+++ b/src/core/CL/kernels/CLNormalizationLayerKernel.cpp
@@ -64,6 +64,9 @@ Error validate_arguments(const ITensorInfo *input, const ITensorInfo *output, No
std::pair<Error, Window> validate_and_configure_window(ITensorInfo *input, ITensorInfo *output, NormalizationLayerInfo norm_info)
{
+ // Output tensor auto initialization if not yet initialized
+ auto_init_if_empty(*output, *input->clone());
+
const unsigned int norm_size = norm_info.norm_size();
bool is_in_map = norm_info.is_in_map();
@@ -103,10 +106,10 @@ void CLNormalizationLayerKernel::configure(const ICLTensor *input, ICLTensor *ou
ARM_COMPUTE_ERROR_ON_NULLPTR(input, output);
// Output tensor auto initialization if not yet initialized
- auto_init_if_empty(*output->info(), input->info()->tensor_shape(), 1, input->info()->data_type(), input->info()->fixed_point_position());
+ auto_init_if_empty(*output->info(), *input->info()->clone());
// Perform validation step
- ARM_COMPUTE_ERROR_THROW_ON(CLNormalizationLayerKernel::validate(input->info(), output->info(), norm_info));
+ ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input->info(), output->info(), norm_info));
_input = input;
_output = output;
diff --git a/src/core/CL/kernels/CLPixelWiseMultiplicationKernel.cpp b/src/core/CL/kernels/CLPixelWiseMultiplicationKernel.cpp
index a466fa41b4..9e89e1ca43 100644
--- a/src/core/CL/kernels/CLPixelWiseMultiplicationKernel.cpp
+++ b/src/core/CL/kernels/CLPixelWiseMultiplicationKernel.cpp
@@ -123,8 +123,8 @@ void CLPixelWiseMultiplicationKernel::configure(const ICLTensor *input1, const I
}
}
- ARM_COMPUTE_ERROR_THROW_ON(CLPixelWiseMultiplicationKernel::validate(input1->info(), input2->info(), output->info(),
- scale, overflow_policy, rounding_policy));
+ ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input1->info(), input2->info(), output->info(),
+ scale, overflow_policy, rounding_policy));
_input1 = input1;
_input2 = input2;
diff --git a/src/core/CL/kernels/CLPoolingLayerKernel.cpp b/src/core/CL/kernels/CLPoolingLayerKernel.cpp
index 9db5c48a3b..7fd2689c43 100644
--- a/src/core/CL/kernels/CLPoolingLayerKernel.cpp
+++ b/src/core/CL/kernels/CLPoolingLayerKernel.cpp
@@ -204,7 +204,7 @@ void CLPoolingLayerKernel::configure(const ICLTensor *input, ICLTensor *output,
auto_init(input->info(), output->info(), pooled_w, pooled_h);
- ARM_COMPUTE_ERROR_THROW_ON(CLPoolingLayerKernel::validate(input->info(), output->info(), pool_info));
+ ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input->info(), output->info(), pool_info));
// Set instance variables
_input = input;