Repository navigation
Accelerate small-prime FFTs with fused SIMD kernels - #181
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reduce transform overhead through specialized SIMD base cases, fused stages, and fewer memory passes while preserving exact modular arithmetic and the existing bit-reversed spectrum order.
• Add register-resident AVX2/FMA 8-, 16-, and 32-point kernels, plus AVX-512 32-/64-point kernels and eight-lane stages.
• Interleave independent compensated products and inline butterfly helpers to reduce spills and call overhead.
• Block large radix-4 passes for cache reuse. Provide optional radix-8/16 stages with twiddle preparation outside coefficient loops; radix 4 remains the default.
• Skip redundant inverse leaf reductions after pointwise multiplication, whose outputs satisfy the stricter input bound.
• Preserve scalar/integer fallbacks and exactness across supported rounding modes.
On AMD EPYC 9454 with GCC 15.2, the default configuration reduces the estimated cost of two forward transforms plus one inverse by 2.48–3.04× versus master at sizes 1,024–32,768. These estimates sum separately measured transform timings; they do not measure complete polynomial multiplication.