Closed jaycedowell closed 1 year ago
Merging #182 (28d788b) into master (be639c0) will not change coverage. The diff coverage is
n/a
.
@@ Coverage Diff @@
## master #182 +/- ##
=======================================
Coverage 66.81% 66.81%
=======================================
Files 69 69
Lines 7410 7410
=======================================
Hits 4951 4951
Misses 2459 2459
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update bba93a3...28d788b. Read the comment docs.
@telegraphic do you agree with this reasoning?
This PR addresses recent (CUDA 10.1+) problems with the FFT test suite. These problems turned out to be caused by two things:
fftshift
keyword, andnumpy.fft.irfft
does. This seems to be more problematic on more recent GPUs.Addressing (2) was a matter of updating the FFT test suite to always make a set of complex numbers that will work with a complex-to-real transform. This involved randomly generating real data and then running a real-to-complex transform to get the complex input data for the tests.
Fixing (1) was not so much fixing as realizing that applying a
fftshift
to data going into a complex-to-real transform doesn't make much sense. Thefftshift
makes since for complex-to-complex transforms where you end up with frequency bins that run from DC to Nyquist, -Nyquist to DC but you (or at least I) really want frequency bins from -Nyquist to Nyquist. You use thefftshift
to put the data in a sensible frequency order for the forward transform and then undo that for you for the reverse transform. In the real-to-complex case there are no negative frequencies so there is nothing to want to shift. The fix is then to ignore thefftshift
keyword and never shift if we are in the complex-to-real or real-to-complex cases. This is akin to what is done with theinverse
keyword where it is ignored for real-to-complex and complex-to-real transforms since the data types set the direction.