Why CUFFT_COMPATIBILITY_FFTW_ALL? Wrong behavior with 2D batched FT

Hi all,

Firstable I have to say I am worried about the possibility of setting a “Compatibility Mode” to CUFFT_COMPATIBILITY_FFTW_ALL !

Does this mean that something like cufftExecZ2D(…) is not an Inverse Discrete Fourier Transform?

I indeed don’t get the right spatial signal after calling a cufftExecZ2D without having set the “Compatibility Mode” to CUFFT_COMPATIBILITY_FFTW_ALL, which must mean that without it I was not performing the Inverse Discrete Fourier Transform.

Now except for the part where cufft is surely not as effective as people from nvidia tend to make us think since using the CUFFT_COMPATIBILITY_FFTW_ALL dramatically decreases the gain one can get, I can’t manage to get the right result (I mean the one related to the Fourier Transform) with this “Compatibility Mode” when I’m batching the call to cufftExecZ2D…

This is quite bothering since using a batch of 1 I need to use CUFFT_COMPATIBILITY_FFTW_ALL to get correct results. However, if I want to use a batch (of 2 for exemple), then I sometimes need to remove the CUFFT_COMPATIBILITY_FFTW_ALL to get correct results.

I suppose there is something I do wrong as I’ve also found a case where weither I set the FFTW Compatability ON or not I don’t get correct output (I’m using out-of-place execution by the way).

If someone has already faced such a situation then please let me know, I’ll be more than glad to get some clues here… Thanks!

I have notice that this (an inverse Z2D and out-of-place FT):

L_cufft_return = cufftExecZ2D((cufftHandle) _FftInverse.m_plan, (cufftDoubleComplex *)pTabFreq, (cufftDoubleReal *)pTabReel);

was actually altering values of my input buffer (_pTabFreq) !

Is this normal beahavior? Printing _pTabFreq before and after the cufftExecZ2D does not give the same results… Maybe all my problems are linked !