diff options
author | alerah01 <alex.rahlis@arm.com> | 2022-01-31 19:04:10 +0200 |
---|---|---|
committer | Alex Rahlis <alex.rahlis@arm.com> | 2022-02-22 09:26:32 +0000 |
commit | c9e519d2ea4780297d71e68cccc5de9c7bb7c0b4 (patch) | |
tree | 933427df414593e4a40d4c269c8065858a635d65 /src/cpu/kernels/CpuDirectConv2dKernel.h | |
parent | 0597b7b55ba0c1aa2cc58e80f95dc918b92afe68 (diff) | |
download | ComputeLibrary-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.h | 22 |
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 }; |