aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/kernels/CpuDirectConv2dKernel.h
diff options
context:
space:
mode:
authoralerah01 <alex.rahlis@arm.com>2022-01-31 19:04:10 +0200
committerAlex Rahlis <alex.rahlis@arm.com>2022-02-22 09:26:32 +0000
commitc9e519d2ea4780297d71e68cccc5de9c7bb7c0b4 (patch)
tree933427df414593e4a40d4c269c8065858a635d65 /src/cpu/kernels/CpuDirectConv2dKernel.h
parent0597b7b55ba0c1aa2cc58e80f95dc918b92afe68 (diff)
downloadComputeLibrary-c9e519d2ea4780297d71e68cccc5de9c7bb7c0b4.tar.gz
Decouple CpuDirectConv2dKernel
Resolves COMPMID-4626 Exclude SVE & SVE2 paths from android.bp NDK version does not support these extensions. Change-Id: I49b147d2a84819975d3225f2920106fa1a0d742f Signed-off-by: alerah01 <alex.rahlis@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/7136 Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Diffstat (limited to 'src/cpu/kernels/CpuDirectConv2dKernel.h')
-rw-r--r--src/cpu/kernels/CpuDirectConv2dKernel.h22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/cpu/kernels/CpuDirectConv2dKernel.h b/src/cpu/kernels/CpuDirectConv2dKernel.h
index 6ec4d4ee04..b9265dc630 100644
--- a/src/cpu/kernels/CpuDirectConv2dKernel.h
+++ b/src/cpu/kernels/CpuDirectConv2dKernel.h
@@ -36,6 +36,9 @@ namespace kernels
/** Interface for the kernel to perform Direct Convolution Layer. */
class CpuDirectConv2dKernel : public ICpuKernel<CpuDirectConv2dKernel>
{
+private:
+ using DirectConv2dKernel_Ptr = std::add_pointer<void(const Window &, const ITensor *, const ITensor *, ITensor *, const PadStrideInfo &)>::type;
+
public:
CpuDirectConv2dKernel() = default;
ARM_COMPUTE_DISALLOW_COPY_ALLOW_MOVE(CpuDirectConv2dKernel);
@@ -67,19 +70,16 @@ public:
void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override;
const char *name() const override;
-private:
- /* Template function for optimized convolution NHWC */
- template <typename T>
- void convolve_nhwc_optimized(const Window &window, const ITensor *src, const ITensor *weights, ITensor *dst);
+ struct DirectConv2dKernel
+ {
+ const char *name;
+ const DataTypeDataLayoutSelectorPtr is_selected;
+ DirectConv2dKernel_Ptr ukernel;
+ };
- /* Template function for convolution NHWC */
- template <typename T>
- void convolve_nhwc(const Window &window, const ITensor *src, const ITensor *weights, ITensor *dst);
-
- /* Template function for convolution NCHW */
- template <typename T>
- void convolve_nchw(const Window &window, const ITensor *src, const ITensor *weights, ITensor *dst);
+ static const std::vector<DirectConv2dKernel> &get_available_kernels();
+private:
PadStrideInfo _conv_info{};
unsigned int _kernel_size{ 0 };
DataLayout _data_layout{ DataLayout::UNKNOWN };