Straight-line codelets for the 5-, 7-, 11- and 13-point leaves - #4
Open
pankgeorg wants to merge 2 commits into
Open
Straight-line codelets for the 5-, 7-, 11- and 13-point leaves#4pankgeorg wants to merge 2 commits into
pankgeorg wants to merge 2 commits into
Conversation
Symmetric odd-length DFT (cosine and sine sums over x_j ± x_{N-j}) with
folded constants, (N-1)^2 real multiplications instead of 4(N-1)^2 from a
twiddle table. Real input is accepted. Composite sizes with factors 5/7:
1000 35 -> 19 us, 46305 3.3 -> 1.9 ms, 10^6 100 -> 68 ms (ComplexF64).
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.
src/odd_codelets.jl:@generatedsymmetric odd-length DFTs (cosine/sine sums over x_j ± x_{N-j}, folded constants, explicit fma) replace the O(N²) twiddle-table loop for the DFT leaves 5/7/11/13 (Float32/Float64, real input accepted); other sizes and types keepfft_dft!.compare3 vs
integration/all, aarch64, 1 thread, 505 cases: 1.08× geomean; smooth class 1.33× ComplexF64 / 1.61× ComplexF32 / 1.27–1.51× rfft (n=1000 35→20 µs, 46305 3.3→2.0 ms, 10^6 100→66 ms), 5–13-point primes up to 5×; everything without factors 5–13 unchanged (the sub-0.95× cells of the first run were noise: a quiet back-to-back re-run of the N-d/batched cases,benchmark/compare3/aarch64/recheck-nd-batched/, has ≤2 of 117 cells below 0.95×, min 0.93×). Table:benchmark/compare3/aarch64/odd/COMPARE3.mdonbench/compare3.Tested: full suite green on 4 threads (
muladd→ explicitfmaneeded for the exact-equality batched-vs-mapslicestests).x86-64 (companion session,
benchmark/x86-64/compare3/odd/): 1.08× geomean; smooth 1.46× ComplexF64 / 1.79× ComplexF32.