diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2018-12-24 13:09:02 +0000 |
---|---|---|
committer | Anthony Barbier <Anthony.barbier@arm.com> | 2018-12-28 13:22:17 +0000 |
commit | 3f8aac4474b245b20c07b3a5384577a83f4950a7 (patch) | |
tree | 83dba64602f7a51d4df0de6ff1363790fa0a056a /src/core/CL | |
parent | 189606997e4e46d9f81e8198e2e96b1ab6dea8f2 (diff) | |
download | ComputeLibrary-3f8aac4474b245b20c07b3a5384577a83f4950a7.tar.gz |
COMPMID-1860: Invalid arguments in CLDepthwiseConvolution3x3 for NHWC
-Alters the kernel/function selection process to use validate for
selection.
-Fixes border kernel input in case of permutation.
Change-Id: Ia61df3a0ed661349114dc125f33ad53ee40d9c76
Reviewed-on: https://review.mlplatform.org/443
Reviewed-by: Anthony Barbier <Anthony.barbier@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/CL')
-rw-r--r-- | src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp b/src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp index 1fce14f215..4f3636b081 100644 --- a/src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp +++ b/src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp @@ -55,6 +55,8 @@ Status validate_arguments(const ITensorInfo *input, const ITensorInfo *weights, ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_DATA_TYPES(input, weights); ARM_COMPUTE_RETURN_ERROR_ON(depth_multiplier > 1); // COMPMID-1071 Add depth multiplier support for NHWC ARM_COMPUTE_RETURN_ERROR_ON(weights->dimension(1) != 3 || weights->dimension(2) != 3); + ARM_COMPUTE_RETURN_ERROR_ON(conv_info.stride().first < 1 || conv_info.stride().first > 2); + ARM_COMPUTE_RETURN_ERROR_ON(std::max(conv_info.pad_top(), conv_info.pad_bottom()) > 1); const bool is_qasymm = is_data_type_quantized_asymmetric(input->data_type()); @@ -155,10 +157,6 @@ void CLDepthwiseConvolutionLayer3x3NHWCKernel::configure(const ICLTensor *input, ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input->info(), weights->info(), (biases != nullptr) ? biases->info() : nullptr, output->info(), conv_info, depth_multiplier, act_info)); - const unsigned int conv_stride_x = conv_info.stride().first; - ARM_COMPUTE_ERROR_ON(conv_stride_x < 1 || conv_stride_x > 2); - ARM_COMPUTE_ERROR_ON(std::max(conv_info.pad_top(), conv_info.pad_bottom()) > 1); - const bool is_qasymm = is_data_type_quantized_asymmetric(input->info()->data_type()); const bool is_stride_1 = ((conv_info.stride().first == conv_info.stride().second) && (conv_info.stride().first == 1)); const bool is_dot8_supported = dot8_supported(CLKernelLibrary::get().get_device()); @@ -243,7 +241,7 @@ void CLDepthwiseConvolutionLayer3x3NHWCKernel::configure(const ICLTensor *input, } else { - build_opts.add_option("-DCONV_STRIDE_X=" + support::cpp11::to_string(conv_stride_x)); + build_opts.add_option("-DCONV_STRIDE_X=" + support::cpp11::to_string(conv_info.stride().first)); build_opts.add_option("-DCONV_STRIDE_Y=" + support::cpp11::to_string(_conv_stride_y)); } build_opts.add_option_if(_input->info()->tensor_shape().total_size_upper(3) > 1, |