Skip to content

Commit 5ba4a74

Browse files
cad-audiometa-codesync[bot]
authored andcommitted
im2row HiFi optimizations (#13431)
Summary: im2row HiFi optimizations Pull Request resolved: #13431 Test Plan: unit tests Differential Revision: D82218005 Pulled By: zonglinpeng
1 parent cf225fe commit 5ba4a74

File tree

7 files changed

+594
-0
lines changed

7 files changed

+594
-0
lines changed

backends/cadence/aot/functions_hifi.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,11 @@
469469
- arg_meta: null
470470
kernel_name: impl::HiFi::quantized_linear_per_tensor_out
471471

472+
- func: cadence::im2row.out(Tensor input, int[2] kernel_size, int[2] dilation, int[2] padding, int[2] stride, Tensor in_zero_point, bool channel_last=False, *, Tensor(a!) out) -> Tensor(a!)
473+
kernels:
474+
- arg_meta: null
475+
kernel_name: cadence::impl::HiFi::im2row_out
476+
472477
- func: cadence::quantized_linear_asym8sxasym8s_asym8s.per_tensor_out(Tensor src, Tensor weight, Tensor bias, int src_zero_point, int weight_zero_point, int out_multiplier, int out_shift, int out_zero_point, Tensor? offset, *, Tensor(a!) out) -> Tensor(a!)
473478
kernels:
474479
- arg_meta: null

backends/cadence/hifi/kernels/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ add_library(
1818
${EXECUTORCH_ROOT}/backends/cadence/hifi/third-party/nnlib/xa_nn_elm_div_mode_f32_broadcast.c
1919
${EXECUTORCH_ROOT}/backends/cadence/hifi/third-party/nnlib/xa_nn_elm_fmod_broadcast_f32.c
2020
${EXECUTORCH_ROOT}/backends/cadence/hifi/third-party/nnlib/xa_nn_greater_lesser_equal_f32.c
21+
${EXECUTORCH_ROOT}/backends/cadence/hifi/third-party/nnlib/xa_nn_im2row.c
2122
${EXECUTORCH_ROOT}/backends/cadence/hifi/third-party/nnlib/xa_nn_elm_logicalxor_bool_bool.c
2223
${EXECUTORCH_ROOT}/backends/cadence/hifi/third-party/nnlib/xa_nn_elm_minimum_maximum_f32.c
2324
${EXECUTORCH_ROOT}/backends/cadence/hifi/third-party/nnlib/xa_nn_elm_mul_f32_broadcast.c

backends/cadence/hifi/kernels/kernels.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,28 @@ extern "C" WORD32 xa_nn_elm_where_broadcast_4D_f32xf32_f32(
196196
const unsigned char* __restrict__ p_condition,
197197
const WORD32* const p_condition_shape);
198198

199+
extern "C" WORD32 xa_nn_im2row_quantized(
200+
const WORD8* __restrict__ data_im,
201+
const WORD32 in_zero_point,
202+
/* input parameters*/
203+
const WORD32 channels,
204+
const WORD32 height,
205+
const WORD32 width,
206+
/* output parameters */
207+
const WORD32 out_height,
208+
const WORD32 out_width,
209+
/* convolution parameters */
210+
const WORD32 kernel_h,
211+
const WORD32 kernel_w,
212+
const WORD32 pad_h,
213+
const WORD32 pad_w,
214+
const WORD32 stride_h,
215+
const WORD32 stride_w,
216+
const WORD32 dilation_h,
217+
const WORD32 dilation_w,
218+
WORD8* __restrict__ data_col,
219+
WORD32 channels_last);
220+
199221
extern "C" WORD32 xa_nn_reduce_mean_4D_f32_f32(
200222
FLOAT32* __restrict__ p_out,
201223
const WORD32* const p_out_shape,

backends/cadence/hifi/operators/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ include(${EXECUTORCH_ROOT}/tools/cmake/Codegen.cmake)
1616

1717
# ATen compliant ops that are needed to run this model.
1818
set(_aten_ops__srcs
19+
"${EXECUTORCH_ROOT}/backends/cadence/hifi/operators/im2row_out.cpp"
1920
"${EXECUTORCH_ROOT}/backends/cadence/hifi/operators/op_add.cpp"
2021
"${EXECUTORCH_ROOT}/backends/cadence/hifi/operators/op_atan2.cpp"
2122
"${EXECUTORCH_ROOT}/backends/cadence/hifi/operators/op_bitwise_and.cpp"

0 commit comments

Comments
 (0)