Skip to content

Commit c01c0a1

Browse files
authored
Fix dispatch condition mismatch in convolve wrapper buffer size functions (#200)
The convolve wrapper buffer size functions (pure-C, MVE, DSP variants) were missing the (input_dims->c == filter_dims->c) check present in the wrapper functions, causing buffer underallocation when input_dims->c != filter_dims->c. Extract dispatch conditions into shared inline helpers in arm_nnsupportfunctions.h to keep wrapper and buffer size functions in sync. Apply helpers to both s8 and s4 wrapper and buffer size functions. Fix arm_convolve_wrapper_s4_get_buffer_size MVE path to call the s4 buffer size variant instead of the s8 variant. Add missing filter_dims.c initialization in s8 and s4 1x1 fast buffer size unit tests, required by the shared helpers that check input_dims->c == filter_dims->c.
1 parent a3f311a commit c01c0a1

7 files changed

Lines changed: 89 additions & 52 deletions

File tree

Include/arm_nnsupportfunctions.h

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright 2010-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
2+
* SPDX-FileCopyrightText: Copyright 2010-2024, 2026 Arm Limited and/or its affiliates <open-source-office@arm.com>
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -21,8 +21,8 @@
2121
* Title: arm_nnsupportfunctions.h
2222
* Description: Public header file of support functions for CMSIS NN Library
2323
*
24-
* $Date: 23 Apr 2025
25-
* $Revision: V.22.8.0
24+
* $Date: 27 Feb 2026
25+
* $Revision: V.22.8.1
2626
*
2727
* Target : Arm(R) M-Profile Architecture
2828
* -------------------------------------------------------------------- */
@@ -110,6 +110,49 @@ extern "C" {
110110
*
111111
*/
112112

113+
/**
114+
* @brief Check if convolution parameters correspond to a 1x1 convolution.
115+
* @param[in] conv_params Convolution parameters
116+
* @param[in] input_dims Input dimensions
117+
* @param[in] filter_dims Filter dimensions
118+
* @return true if parameters describe a 1x1 convolution, false otherwise.
119+
*/
120+
__STATIC_INLINE bool arm_nn_is_convolve_1x1(const cmsis_nn_conv_params *conv_params,
121+
const cmsis_nn_dims *input_dims,
122+
const cmsis_nn_dims *filter_dims)
123+
{
124+
return (conv_params->padding.w == 0) && (conv_params->padding.h == 0) && (filter_dims->w == 1) &&
125+
(filter_dims->h == 1) && (conv_params->dilation.w == 1) && (conv_params->dilation.h == 1) &&
126+
(input_dims->c == filter_dims->c);
127+
}
128+
129+
/**
130+
* @brief Check if a 1x1 convolution qualifies for the fast (unit stride) path.
131+
* @param[in] conv_params Convolution parameters
132+
* @return true if stride is 1x1, false otherwise.
133+
*
134+
* @note Does not validate that the kernel is 1x1. Call arm_nn_is_convolve_1x1() first.
135+
*/
136+
__STATIC_INLINE bool arm_nn_is_convolve_1x1_fast(const cmsis_nn_conv_params *conv_params)
137+
{
138+
return (conv_params->stride.w == 1) && (conv_params->stride.h == 1);
139+
}
140+
141+
/**
142+
* @brief Check if convolution parameters correspond to a 1xN convolution.
143+
* @param[in] conv_params Convolution parameters
144+
* @param[in] input_dims Input dimensions
145+
* @param[in] filter_dims Filter dimensions
146+
* @return true if parameters describe a 1xN convolution, false otherwise.
147+
*/
148+
__STATIC_INLINE bool arm_nn_is_convolve_1_x_n(const cmsis_nn_conv_params *conv_params,
149+
const cmsis_nn_dims *input_dims,
150+
const cmsis_nn_dims *filter_dims)
151+
{
152+
return (input_dims->h == 1) && (conv_params->dilation.w == 1) && (filter_dims->h == 1) &&
153+
((conv_params->stride.w * input_dims->c) % 4 == 0) && (input_dims->c == filter_dims->c);
154+
}
155+
113156
/**
114157
* @defgroup genPrivTypes Structure Types
115158
* @ingroup groupSupport

Source/ConvolutionFunctions/arm_convolve_get_buffer_sizes_s4.c

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright 2023-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
2+
* SPDX-FileCopyrightText: Copyright 2023-2024, 2026 Arm Limited and/or its affiliates <open-source-office@arm.com>
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -21,8 +21,8 @@
2121
* Title: arm_convolve_get_buffer_sizes_s4.c
2222
* Description: Collection of get buffer size functions for the various s4 convolution layer functions.
2323
*
24-
* $Date: 10 April 2024
25-
* $Revision: V.1.1.0
24+
* $Date: 27 Feb 2026
25+
* $Revision: V.1.1.1
2626
*
2727
* Target : Arm(R) M-Profile Architecture
2828
*
@@ -117,13 +117,12 @@ int32_t arm_convolve_wrapper_s4_get_buffer_size(const cmsis_nn_conv_params *conv
117117
const cmsis_nn_dims *output_dims)
118118
{
119119
#if defined(ARM_MATH_MVEI)
120-
return arm_convolve_wrapper_s8_get_buffer_size_mve(conv_params, input_dims, filter_dims, output_dims);
120+
return arm_convolve_wrapper_s4_get_buffer_size_mve(conv_params, input_dims, filter_dims, output_dims);
121121
#else
122122
(void)output_dims;
123-
if ((conv_params->padding.w == 0) && (conv_params->padding.h == 0) && (filter_dims->w == 1) &&
124-
(filter_dims->h == 1) && (conv_params->dilation.w == 1 && conv_params->dilation.h == 1))
123+
if (arm_nn_is_convolve_1x1(conv_params, input_dims, filter_dims))
125124
{
126-
if ((conv_params->stride.w == 1) && (conv_params->stride.h == 1))
125+
if (arm_nn_is_convolve_1x1_fast(conv_params))
127126
{
128127
return arm_convolve_1x1_s4_fast_get_buffer_size(input_dims);
129128
}
@@ -146,10 +145,9 @@ int32_t arm_convolve_wrapper_s4_get_buffer_size_mve(const cmsis_nn_conv_params *
146145

147146
{
148147
(void)output_dims;
149-
if ((conv_params->padding.w == 0) && (conv_params->padding.h == 0) && (filter_dims->w == 1) &&
150-
(filter_dims->h == 1) && (conv_params->dilation.w == 1 && conv_params->dilation.h == 1))
148+
if (arm_nn_is_convolve_1x1(conv_params, input_dims, filter_dims))
151149
{
152-
if ((conv_params->stride.w == 1) && (conv_params->stride.h == 1))
150+
if (arm_nn_is_convolve_1x1_fast(conv_params))
153151
{
154152
return arm_convolve_1x1_s4_fast_get_buffer_size(input_dims);
155153
}
@@ -158,8 +156,7 @@ int32_t arm_convolve_wrapper_s4_get_buffer_size_mve(const cmsis_nn_conv_params *
158156
return 0;
159157
}
160158
}
161-
else if ((input_dims->h == 1) && (conv_params->dilation.w == 1) && (filter_dims->h == 1) &&
162-
(conv_params->stride.w * input_dims->c % 4 == 0))
159+
else if (arm_nn_is_convolve_1_x_n(conv_params, input_dims, filter_dims))
163160
{
164161
return arm_convolve_1_x_n_s4_get_buffer_size_mve(conv_params, input_dims, filter_dims, output_dims);
165162
}

Source/ConvolutionFunctions/arm_convolve_get_buffer_sizes_s8.c

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright 2023-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
2+
* SPDX-FileCopyrightText: Copyright 2023-2024, 2026 Arm Limited and/or its affiliates <open-source-office@arm.com>
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -21,8 +21,8 @@
2121
* Title: arm_convolve_get_buffer_sizes_s8.c
2222
* Description: Collection of get buffer size functions for the various s8 convolution layer functions.
2323
*
24-
* $Date: 31 October 2024
25-
* $Revision: V.2.2.1
24+
* $Date: 27 Feb 2026
25+
* $Revision: V.2.2.2
2626
*
2727
* Target : Arm(R) M-Profile Architecture
2828
*
@@ -147,10 +147,9 @@ int32_t arm_convolve_wrapper_s8_get_buffer_size(const cmsis_nn_conv_params *conv
147147
return arm_convolve_wrapper_s8_get_buffer_size_dsp(conv_params, input_dims, filter_dims, output_dims);
148148
#else
149149
(void)output_dims;
150-
if ((conv_params->padding.w == 0) && (conv_params->padding.h == 0) && (filter_dims->w == 1) &&
151-
(filter_dims->h == 1) && (conv_params->dilation.w == 1 && conv_params->dilation.h == 1))
150+
if (arm_nn_is_convolve_1x1(conv_params, input_dims, filter_dims))
152151
{
153-
if ((conv_params->stride.w == 1) && (conv_params->stride.h == 1))
152+
if (arm_nn_is_convolve_1x1_fast(conv_params))
154153
{
155154
return arm_convolve_1x1_s8_fast_get_buffer_size(input_dims);
156155
}
@@ -159,8 +158,7 @@ int32_t arm_convolve_wrapper_s8_get_buffer_size(const cmsis_nn_conv_params *conv
159158
return 0;
160159
}
161160
}
162-
else if ((input_dims->h == 1) && (conv_params->dilation.w == 1) && (filter_dims->h == 1) &&
163-
(conv_params->stride.w * input_dims->c % 4 == 0))
161+
else if (arm_nn_is_convolve_1_x_n(conv_params, input_dims, filter_dims))
164162
{
165163
return arm_convolve_1_x_n_s8_get_buffer_size(conv_params, input_dims, filter_dims, output_dims);
166164
}
@@ -177,10 +175,9 @@ int32_t arm_convolve_wrapper_s8_get_buffer_size_mve(const cmsis_nn_conv_params *
177175
const cmsis_nn_dims *output_dims)
178176
{
179177
(void)output_dims;
180-
if ((conv_params->padding.w == 0) && (conv_params->padding.h == 0) && (filter_dims->w == 1) &&
181-
(filter_dims->h == 1) && (conv_params->dilation.w == 1 && conv_params->dilation.h == 1))
178+
if (arm_nn_is_convolve_1x1(conv_params, input_dims, filter_dims))
182179
{
183-
if ((conv_params->stride.w == 1) && (conv_params->stride.h == 1))
180+
if (arm_nn_is_convolve_1x1_fast(conv_params))
184181
{
185182
return arm_convolve_1x1_s8_fast_get_buffer_size(input_dims);
186183
}
@@ -189,8 +186,7 @@ int32_t arm_convolve_wrapper_s8_get_buffer_size_mve(const cmsis_nn_conv_params *
189186
return 0;
190187
}
191188
}
192-
else if ((input_dims->h == 1) && (conv_params->dilation.w == 1) && (filter_dims->h == 1) &&
193-
(conv_params->stride.w * input_dims->c % 4 == 0))
189+
else if (arm_nn_is_convolve_1_x_n(conv_params, input_dims, filter_dims))
194190
{
195191
return arm_convolve_1_x_n_s8_get_buffer_size_mve(conv_params, input_dims, filter_dims, output_dims);
196192
}
@@ -206,10 +202,9 @@ int32_t arm_convolve_wrapper_s8_get_buffer_size_dsp(const cmsis_nn_conv_params *
206202
const cmsis_nn_dims *output_dims)
207203
{
208204
(void)output_dims;
209-
if ((conv_params->padding.w == 0) && (conv_params->padding.h == 0) && (filter_dims->w == 1) &&
210-
(filter_dims->h == 1) && (conv_params->dilation.w == 1 && conv_params->dilation.h == 1))
205+
if (arm_nn_is_convolve_1x1(conv_params, input_dims, filter_dims))
211206
{
212-
if ((conv_params->stride.w == 1) && (conv_params->stride.h == 1))
207+
if (arm_nn_is_convolve_1x1_fast(conv_params))
213208
{
214209
return arm_convolve_1x1_s8_fast_get_buffer_size_dsp(input_dims);
215210
}
@@ -218,8 +213,7 @@ int32_t arm_convolve_wrapper_s8_get_buffer_size_dsp(const cmsis_nn_conv_params *
218213
return 0;
219214
}
220215
}
221-
else if ((input_dims->h == 1) && (conv_params->dilation.w == 1) && (filter_dims->h == 1) &&
222-
(conv_params->stride.w * input_dims->c % 4 == 0))
216+
else if (arm_nn_is_convolve_1_x_n(conv_params, input_dims, filter_dims))
223217
{
224218
return arm_convolve_1_x_n_s8_get_buffer_size(conv_params, input_dims, filter_dims, output_dims);
225219
}

Source/ConvolutionFunctions/arm_convolve_wrapper_s4.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright 2023-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
2+
* SPDX-FileCopyrightText: Copyright 2023-2024, 2026 Arm Limited and/or its affiliates <open-source-office@arm.com>
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -22,14 +22,15 @@
2222
* Description: s4 convolution layer wrapper function with the main purpose to call the optimal kernel available in
2323
* cmsis-nn to perform the convolution. See header files for details.
2424
*
25-
* $Date: 27 May 2024
26-
* $Revision: V.1.2.0
25+
* $Date: 27 Feb 2026
26+
* $Revision: V.1.2.1
2727
*
2828
* Target : Arm(R) M-Profile Architecture
2929
*
3030
* -------------------------------------------------------------------- */
3131

3232
#include "arm_nnfunctions.h"
33+
#include "arm_nnsupportfunctions.h"
3334

3435
/**
3536
* @ingroup Public
@@ -59,10 +60,9 @@ arm_cmsis_nn_status arm_convolve_wrapper_s4(const cmsis_nn_context *ctx,
5960
const cmsis_nn_dims *output_dims,
6061
int8_t *output_data)
6162
{
62-
if ((conv_params->padding.w == 0) && (conv_params->padding.h == 0) && (filter_dims->w == 1) &&
63-
(filter_dims->h == 1) && (conv_params->dilation.w == 1 && conv_params->dilation.h == 1))
63+
if (arm_nn_is_convolve_1x1(conv_params, input_dims, filter_dims))
6464
{
65-
if ((conv_params->stride.w == 1) && (conv_params->stride.h == 1))
65+
if (arm_nn_is_convolve_1x1_fast(conv_params))
6666
{
6767
return arm_convolve_1x1_s4_fast(ctx,
6868
conv_params,
@@ -91,8 +91,7 @@ arm_cmsis_nn_status arm_convolve_wrapper_s4(const cmsis_nn_context *ctx,
9191
output_data);
9292
}
9393
}
94-
else if ((input_dims->h == 1) && conv_params->dilation.w == 1 && (filter_dims->h == 1) &&
95-
((conv_params->stride.w * input_dims->c) % 4 == 0) && (input_dims->c == filter_dims->c))
94+
else if (arm_nn_is_convolve_1_x_n(conv_params, input_dims, filter_dims))
9695
{
9796
return arm_convolve_1_x_n_s4(ctx,
9897
conv_params,

Source/ConvolutionFunctions/arm_convolve_wrapper_s8.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright 2010-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
2+
* SPDX-FileCopyrightText: Copyright 2010-2024, 2026 Arm Limited and/or its affiliates <open-source-office@arm.com>
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -22,14 +22,15 @@
2222
* Description: s8 convolution layer wrapper function with the main purpose to call the optimal kernel available in
2323
* cmsis-nn to perform the convolution.
2424
*
25-
* $Date: 04 November 2024
26-
* $Revision: V.2.5.1
25+
* $Date: 27 Feb 2026
26+
* $Revision: V.2.5.2
2727
*
2828
* Target : Arm(R) M-Profile Architecture
2929
*
3030
* -------------------------------------------------------------------- */
3131

3232
#include "arm_nnfunctions.h"
33+
#include "arm_nnsupportfunctions.h"
3334

3435
/**
3536
* @ingroup Public
@@ -59,11 +60,9 @@ arm_cmsis_nn_status arm_convolve_wrapper_s8(const cmsis_nn_context *ctx,
5960
const cmsis_nn_dims *output_dims,
6061
int8_t *output_data)
6162
{
62-
if ((conv_params->padding.w == 0) && (conv_params->padding.h == 0) && (filter_dims->w == 1) &&
63-
(filter_dims->h == 1) && (conv_params->dilation.w == 1 && conv_params->dilation.h == 1) &&
64-
(input_dims->c == filter_dims->c))
63+
if (arm_nn_is_convolve_1x1(conv_params, input_dims, filter_dims))
6564
{
66-
if ((conv_params->stride.w == 1) && (conv_params->stride.h == 1))
65+
if (arm_nn_is_convolve_1x1_fast(conv_params))
6766
{
6867
return arm_convolve_1x1_s8_fast(ctx,
6968
conv_params,
@@ -92,8 +91,7 @@ arm_cmsis_nn_status arm_convolve_wrapper_s8(const cmsis_nn_context *ctx,
9291
output_data);
9392
}
9493
}
95-
else if ((input_dims->h == 1) && conv_params->dilation.w == 1 && (filter_dims->h == 1) &&
96-
((conv_params->stride.w * input_dims->c) % 4 == 0) && (input_dims->c == filter_dims->c))
94+
else if (arm_nn_is_convolve_1_x_n(conv_params, input_dims, filter_dims))
9795
{
9896
return arm_convolve_1_x_n_s8(ctx,
9997
conv_params,

Tests/UnitTest/TestCases/test_arm_convolve_1x1_s4_fast/test_arm_convolve_1x1_s4_fast.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
2+
* SPDX-FileCopyrightText: Copyright 2023, 2026 Arm Limited and/or its affiliates <open-source-office@arm.com>
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -584,6 +584,7 @@ void buffer_size_arm_convolve_1x1_s4_fast(void)
584584
input_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_IN_CH;
585585
filter_dims.w = KERNEL1X1_STRIDE_X_Y_2_INT4_FILTER_X;
586586
filter_dims.h = KERNEL1X1_STRIDE_X_Y_2_INT4_FILTER_Y;
587+
filter_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_IN_CH;
587588
output_dims.w = KERNEL1X1_STRIDE_X_Y_2_INT4_OUTPUT_W;
588589
output_dims.h = KERNEL1X1_STRIDE_X_Y_2_INT4_OUTPUT_H;
589590
output_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_OUT_CH;
@@ -621,6 +622,7 @@ void buffer_size_mve_arm_convolve_1x1_s4_fast(void)
621622
input_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_IN_CH;
622623
filter_dims.w = KERNEL1X1_STRIDE_X_Y_2_INT4_FILTER_X;
623624
filter_dims.h = KERNEL1X1_STRIDE_X_Y_2_INT4_FILTER_Y;
625+
filter_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_IN_CH;
624626
output_dims.w = KERNEL1X1_STRIDE_X_Y_2_INT4_OUTPUT_W;
625627
output_dims.h = KERNEL1X1_STRIDE_X_Y_2_INT4_OUTPUT_H;
626628
output_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_OUT_CH;
@@ -660,6 +662,7 @@ void buffer_size_dsp_arm_convolve_1x1_s4_fast(void)
660662
input_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_IN_CH;
661663
filter_dims.w = KERNEL1X1_STRIDE_X_Y_2_INT4_FILTER_X;
662664
filter_dims.h = KERNEL1X1_STRIDE_X_Y_2_INT4_FILTER_Y;
665+
filter_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_IN_CH;
663666
output_dims.w = KERNEL1X1_STRIDE_X_Y_2_INT4_OUTPUT_W;
664667
output_dims.h = KERNEL1X1_STRIDE_X_Y_2_INT4_OUTPUT_H;
665668
output_dims.c = KERNEL1X1_STRIDE_X_Y_2_INT4_OUT_CH;

Tests/UnitTest/TestCases/test_arm_convolve_1x1_s8_fast/test_arm_convolve_1x1_s8_fast.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright 2010-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
2+
* SPDX-FileCopyrightText: Copyright 2010-2024, 2026 Arm Limited and/or its affiliates <open-source-office@arm.com>
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -425,6 +425,7 @@ void buffer_size_arm_convolve_1x1_s8_fast(void)
425425
input_dims.c = KERNEL1X1_IN_CH;
426426
filter_dims.w = KERNEL1X1_FILTER_X;
427427
filter_dims.h = KERNEL1X1_FILTER_Y;
428+
filter_dims.c = KERNEL1X1_IN_CH;
428429
output_dims.w = KERNEL1X1_OUTPUT_W;
429430
output_dims.h = KERNEL1X1_OUTPUT_H;
430431
output_dims.c = KERNEL1X1_OUT_CH;
@@ -465,6 +466,7 @@ void buffer_size_mve_arm_convolve_1x1_s8_fast(void)
465466
input_dims.c = KERNEL1X1_STRIDE_X_Y_2_IN_CH;
466467
filter_dims.w = KERNEL1X1_STRIDE_X_Y_2_FILTER_X;
467468
filter_dims.h = KERNEL1X1_STRIDE_X_Y_2_FILTER_Y;
469+
filter_dims.c = KERNEL1X1_STRIDE_X_Y_2_IN_CH;
468470
output_dims.w = KERNEL1X1_STRIDE_X_Y_2_OUTPUT_W;
469471
output_dims.h = KERNEL1X1_STRIDE_X_Y_2_OUTPUT_H;
470472
output_dims.c = KERNEL1X1_STRIDE_X_Y_2_OUT_CH;
@@ -504,6 +506,7 @@ void buffer_size_dsp_arm_convolve_1x1_s8_fast(void)
504506
input_dims.c = KERNEL1X1_STRIDE_X_Y_2_IN_CH;
505507
filter_dims.w = KERNEL1X1_STRIDE_X_Y_2_FILTER_X;
506508
filter_dims.h = KERNEL1X1_STRIDE_X_Y_2_FILTER_Y;
509+
filter_dims.c = KERNEL1X1_STRIDE_X_Y_2_IN_CH;
507510
output_dims.w = KERNEL1X1_STRIDE_X_Y_2_OUTPUT_W;
508511
output_dims.h = KERNEL1X1_STRIDE_X_Y_2_OUTPUT_H;
509512
output_dims.c = KERNEL1X1_STRIDE_X_Y_2_OUT_CH;

0 commit comments

Comments
 (0)