Skip to content

Add NEON optimizations of SynetDynamicQuantizedInnerProduct16bGemmV0 - #1130

Merged
ermig1979 merged 1 commit into
devfrom
cursor/neon-synet-dq-ip16b-gemmv0-4461
Oct 26, 2026
Merged

ermig1979 merged 1 commit into
devfrom
cursor/neon-synet-dq-ip16b-gemmv0-4461

Conversation

@ermig1979

Copy link
Copy Markdown
Owner

Summary

Adds a NEON implementation of SynetDynamicQuantizedInnerProduct16bGemmV0, following the SSE4.1 kernels, and dispatches it on ARM.

  • Per-row A quantization (FP32 and BF16) and per-column B quantization use NEON, with B packed into the same 4×K groups the SSE4.1 GEMM consumes. B stays in the overflow range [-64, 63].
  • The int8 product is a 2×F microkernel (Madd4<true>) with the M template extended to 12. The tail dequantizes, adds bias, and applies the activation, writing FP32 or BF16.
  • Release notes for 8.0.167 list NEON next to the other SynetDynamicQuantizedInnerProduct16bGemmV0 optimizations. The VS2022 Neon project includes the new sources. The 16b auto test runs the NEON path.

Test

Cross-built with aarch64-linux-gnu-g++ and run under qemu-aarch64:

./Test -r=.. -fi=SynetDynamicQuantizedInnerProduct16bForward -tt=1 -ts=1

All tests finished successfully. On 333×555×444, NEON was about 1.5×–1.6× faster than Base under emulation (common time 84.9 ms vs 131.1 ms). An additional Base-vs-NEON sweep (partial N and K, M up to 340, K past the L1 tile, BF16 and int8 B, several activations) matched within the auto-test tolerance.

Open in Web Open in Cursor 

…GemmV0.

Port the SSE4.1 GemmV0 kernels to NEON with a 12-row microkernel, and dispatch them on ARM.

Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
Copilot AI balanced review requested due to automatic review settings October 26, 2026 13:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@ermig1979
ermig1979 merged commit 1935930 into dev Oct 26, 2026
2 checks 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.

3 participants