Add batched and multi-dimensional rfft/irfft support#60
Conversation
Signed-off-by: jamesquinlan <james@stillwater-sc.com>
|
Awesome thanks for this effort! Feel free to keep @maximilian-gelbrecht and me updated about this progress. We have recently implemented MatrixSpectralTransform in SpeedyTransforms as it's fast at low resolutions with the side effect of being more type flexible as it only needs a matrix vector multiplication. But being able to use GenericFFT is also great! |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #60 +/- ##
==========================================
+ Coverage 76.05% 82.97% +6.91%
==========================================
Files 2 2
Lines 213 276 +63
==========================================
+ Hits 162 229 +67
+ Misses 51 47 -4 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Signed-off-by: jamesquinlan <james@stillwater-sc.com>
Signed-off-by: jamesquinlan <james@stillwater-sc.com>
|
My goal is to run in low-precision (added to this to the README). A few bugs (in my case) found along the way include: Bug 1: Bug 2: Missing fft dispatch for non-FFTW types Bug 3: generic_fft only defined for Complex{T}, not real T Bug 4: Index arithmetic computed in type T (LP formats have limited consecutive integers) Bug 5: Bug 6: Wks = T.(cispi.(...)) fails for real T Tests: Added testsets covering all six bugs for Float16, BFloat16, BigFloat Dependencies: |
Signed-off-by: jamesquinlan <james@stillwater-sc.com>
Signed-off-by: jamesquinlan <james@stillwater-sc.com>
Signed-off-by: jamesquinlan <james@stillwater-sc.com>
|
Review comments addressed; removed threading and added CartesianIndices explanation. Tests for the missing coverage paths are in place. |
Motivation: add support for
AbstractMatrixand higher-dimAbstractArraytypes inrfftandirfft. It was needed to support workflows inSpeedyTransforms.jlwhich call plans on 2d views. Previously,generic_rfftonly handledAbstractVectorgiving aMehtodErrorfor matrces.New Features:
AbstractFFTsinterface.Minor Bug Fixes & Improvements:
plan_rfftstores length of the tranformed dimension instead of the total array lengthpinvinDummyPlanto allow real-input plans to store complex-output inverses.Verification:
test/fft_tests.jlof batached 1d rfft/irfft along different dimensions