Skip to content

Commit d1d255f

Browse files
authored
Merge pull request #27 from dijopaul/main_im2row
Adding im2row in HiFi flow and adding possible optimizations
2 parents 05e780c + 589e14b commit d1d255f

File tree

6 files changed

+593
-0
lines changed

6 files changed

+593
-0
lines changed

backends/cadence/aot/functions_hifi.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,11 @@
314314
- arg_meta: null
315315
kernel_name: cadence::impl::HiFi::quantized_linear_per_tensor_out
316316

317+
- 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!)
318+
kernels:
319+
- arg_meta: null
320+
kernel_name: cadence::impl::HiFi::im2row_out
321+
317322
- func: cadence::quantized_relu_per_tensor.out(Tensor X, Tensor X_zero_point, int out_zero_point, Tensor out_multiplier, Tensor out_shift, *, Tensor(a!) out) -> Tensor(a!)
318323
kernels:
319324
- 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)