Skip to content

Add SVE2 optimizations for SynetConvolution16bNhwcGemmV0 - #852

Merged
ermig1979 merged 1 commit into
devfrom
cursor/sve2-synet-conv16b-nhwc-gemm-v0-9d97
Aug 13, 2026
Merged

Add SVE2 optimizations for SynetConvolution16bNhwcGemmV0#852
ermig1979 merged 1 commit into
devfrom
cursor/sve2-synet-conv16b-nhwc-gemm-v0-9d97

Conversation

@ermig1979

Copy link
Copy Markdown
Owner

Summary

Adds SVE/SVE2/SVE-BF16 optimizations for Base::SynetConvolution16bNhwcGemmV0 on ARM/ARM64.

  • New: SimdSve2SynetConvolution16bNhwcGemmV0.cpp — convert/reorder, 2×M microkernels (F=svcntw(), microM=5, microK=2) with svbfdot, Term16b save helpers
  • Wire: Sve2::SynetConvolution16bInit selects Sve2::SynetConvolution16bNhwcGemmV0 when preferable; keeps Neon SpecV0 for shapes where SpecV0 is preferable
  • Header: Sve2::SynetConvolution16bNhwcGemmV0 in SimdSynetConvolution16b.h
  • Tests: additional NHWC Gemm AutoTest cases in TestSynetConvolution16b.cpp
  • VS2022: Sve2.vcxproj / .filters
  • Docs: release 7.2.165 note in docs/2026.html

Test plan

  • Cross-compile for aarch64 with SIMD_SVE2=ON
  • Run under qemu: ./Test "-r=.." -fi=SynetConvolution16b -tt=1 -ts=1
  • Confirm log shows Sve2::NhwcGemmV0 for NHWC group=1 (non-SpecV0) shapes and matches Base within EPS
Open in Web Open in Cursor 

Port NHWC GEMM bf16 convolution to SVE/SVE2/SVE-BF16 with svbfdot
microkernels, wire SynetConvolution16bInit dispatch (keeping Neon SpecV0),
extend AutoTests, update VS2022 Sve2 project files, and release 7.2.165 notes.

Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
@ermig1979
ermig1979 marked this pull request as ready for review August 13, 2026 06:34
@ermig1979
ermig1979 merged commit 1a91de7 into dev Aug 13, 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