Skip to content

Add NEON optimizations for SynetDeconvolution16bNhwcGemm - #833

Merged
ermig1979 merged 1 commit into
devfrom
cursor/neon-synet-deconvolution16b-nhwcgemm-bdf2
Aug 10, 2026
Merged

Add NEON optimizations for SynetDeconvolution16bNhwcGemm#833
ermig1979 merged 1 commit into
devfrom
cursor/neon-synet-deconvolution16b-nhwcgemm-bdf2

Conversation

@ermig1979

@ermig1979 ermig1979 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Summary

Adds ARM/ARM64 NEON optimizations for SynetDeconvolution16bNhwcGemm, following the existing SSE41 NHWC GEMM structure and NEON BF16 patterns from SynetInnerProduct16bGemmNN.

Changes

  • New SimdNeonSynetDeconvolution16b.cpp / SimdNeonSynetDeconvolution16bNhwcGemm.cpp
    • BF16 convert/reorder, 2×M GEMM microkernels (F=4, microM=5, microN=8, microK=2)
    • Row-to-image scatter and bias/activation postprocess
  • Declare Neon::SynetDeconvolution16bNhwcGemm and Init in SimdSynetDeconvolution16b.h
  • Wire SIMD_NEON_FUNC into SimdSynetDeconvolution16bInit
  • Enable Neon path in TestSynetDeconvolution16b
  • Add sources to VS2022 Neon project/filters
  • Document under release 7.2.165 in docs/2026.html

Validation

  • Native x86_64 Release build succeeded
  • ./Test "-r=.." -fi=SynetDeconvolution16b -tt=1 -ts=1 — all tests finished successfully
  • aarch64 cross-compile of both new Neon translation units succeeded (aarch64-linux-gnu-g++)
Open in Web Open in Cursor 

Port the BF16 NHWC GEMM deconvolution path from SSE41 to NEON for
ARM/ARM64, wire Init dispatch and tests, and document the change in
release 7.2.165.

Co-authored-by: Ihar Yermalayeu <ermig1979@gmail.com>
@ermig1979
ermig1979 marked this pull request as ready for review August 10, 2026 08:18
@ermig1979
ermig1979 merged commit 60fe86d into dev Aug 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants