diff options
author | Michael Tyler <michael.tyler@arm.com> | 2023-07-07 12:01:32 +0100 |
---|---|---|
committer | michael.tyler <michael.tyler@arm.com> | 2023-07-13 12:21:29 +0000 |
commit | 4c30de056afe8680b42723b26a2241811715b989 (patch) | |
tree | 4f522a816a5ea1b58b51226eb685c786096f30e3 /src/core/NEON/kernels/arm_conv/depthwise/interleaves | |
parent | c8e1617807ef1985a39d8f8f5f69c113b758494d (diff) | |
download | ComputeLibrary-4c30de056afe8680b42723b26a2241811715b989.tar.gz |
Enable premultiplication for depthwise convolution
with fp16 and quantized types
Resolves: COMPMID-6337
Change-Id: I81542e51c9c0329f202ac8452f173b138e51a0f6
Signed-off-by: Michael Tyler <michael.tyler@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9883
Reviewed-by: Gunes Bayir <gunes.bayir@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/arm_conv/depthwise/interleaves')
3 files changed, 3 insertions, 3 deletions
diff --git a/src/core/NEON/kernels/arm_conv/depthwise/interleaves/a64_u8q_3x3_dot.cpp b/src/core/NEON/kernels/arm_conv/depthwise/interleaves/a64_u8q_3x3_dot.cpp index 314f09a0c5..19264c9fce 100644 --- a/src/core/NEON/kernels/arm_conv/depthwise/interleaves/a64_u8q_3x3_dot.cpp +++ b/src/core/NEON/kernels/arm_conv/depthwise/interleaves/a64_u8q_3x3_dot.cpp @@ -42,7 +42,7 @@ size_t interleave_a64_u8q_3x3_dot::get_packed_size(const DepthwiseArgs &args) { // We store 7 vectors for every <vector_of_ints> of channels. const unsigned int n = arm_gemm::roundup( - arm_gemm::iceildiv((long unsigned int) args.input_channels, + arm_gemm::iceildiv((long unsigned int) args.input_channels * args.channel_multiplier, get_vector_length<int32_t>(arm_gemm::VLType::None)), 4lu ); return n * 7 * get_vector_length<uint8_t>(arm_gemm::VLType::None); diff --git a/src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp b/src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp index 3a4999296a..5d7b54f235 100644 --- a/src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp +++ b/src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp @@ -42,7 +42,7 @@ size_t interleave_sve_s8q_3x3_dot::get_packed_size(const DepthwiseArgs &args) { // We store 7 vectors for every <vector_of_ints> of channels. const unsigned int n = arm_gemm::roundup( - arm_gemm::iceildiv((long unsigned int) args.input_channels, + arm_gemm::iceildiv((long unsigned int) args.input_channels * args.channel_multiplier, get_vector_length<int32_t>(arm_gemm::VLType::SVE)), 4lu ); return n * 7 * get_vector_length<int8_t>(arm_gemm::VLType::SVE); diff --git a/src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp b/src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp index 7c5d3c4904..c3da81448b 100644 --- a/src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp +++ b/src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp @@ -42,7 +42,7 @@ size_t interleave_sve_u8q_3x3_dot::get_packed_size(const DepthwiseArgs &args) { // We store 7 vectors for every <vector_of_ints> of channels. const unsigned int n = arm_gemm::roundup( - arm_gemm::iceildiv((long unsigned int) args.input_channels, + arm_gemm::iceildiv((long unsigned int) args.input_channels * args.channel_multiplier, get_vector_length<int32_t>(arm_gemm::VLType::SVE)), 4lu ); return n * 7 * get_vector_length<uint8_t>(arm_gemm::VLType::SVE); |