aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/kernels/internal/CpuDepthwiseConv2dAssemblyWrapperKernel.cpp
diff options
context:
space:
mode:
authorViet-Hoa Do <viet-hoa.do@arm.com>2023-06-21 10:39:48 +0100
committerViet-Hoa Do <viet-hoa.do@arm.com>2023-06-21 15:21:33 +0000
commit8eb82d235f605cd07220107588dde54c704f61a6 (patch)
treeb3c1a99af2804c1116b476727fbfa40ddbfea461 /src/cpu/kernels/internal/CpuDepthwiseConv2dAssemblyWrapperKernel.cpp
parent3f16c5758f4f8e71e76e302150f0696a1dcc59fa (diff)
downloadComputeLibrary-8eb82d235f605cd07220107588dde54c704f61a6.tar.gz
Fix CPU depthwise convolution in case of large padding
* Avoid the assembly kernels to be used when the padding is greater than the kernel shape. Resolves: COMPMID-6280 Signed-off-by: Viet-Hoa Do <viet-hoa.do@arm.com> Change-Id: Ibe0820018c97f4481bf318397b797ec7b351a1d5 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9802 Benchmark: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Jakub Sujak <jakub.sujak@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/cpu/kernels/internal/CpuDepthwiseConv2dAssemblyWrapperKernel.cpp')
-rw-r--r--src/cpu/kernels/internal/CpuDepthwiseConv2dAssemblyWrapperKernel.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/cpu/kernels/internal/CpuDepthwiseConv2dAssemblyWrapperKernel.cpp b/src/cpu/kernels/internal/CpuDepthwiseConv2dAssemblyWrapperKernel.cpp
index 5360abf5ac..8cda5c6afd 100644
--- a/src/cpu/kernels/internal/CpuDepthwiseConv2dAssemblyWrapperKernel.cpp
+++ b/src/cpu/kernels/internal/CpuDepthwiseConv2dAssemblyWrapperKernel.cpp
@@ -303,6 +303,16 @@ Status CpuDepthwiseConv2dAssemblyWrapperKernel::validate(const ITensorInfo *src,
ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_DIMENSIONS(dst->tensor_shape(), dst_shape);
ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_DATA_TYPES(src, dst);
}
+
+ // Assembly kernels cannot work with padding greater than the kernel.
+ const auto &padding = info.pad_stride_info;
+ const auto &wei_shape = weights->tensor_shape();
+
+ ARM_COMPUTE_RETURN_ERROR_ON(
+ padding.pad_top() >= wei_shape[2] || padding.pad_bottom() >= wei_shape[2] ||
+ padding.pad_left() >= wei_shape[1] || padding.pad_right() >= wei_shape[1]
+ );
+
return Status{};
}