In a numerical computation, I am required to take a multi-dimensional FFT on a distributed-memory cluster. The data is currently distributed using a distributed array in PETSc (DMDA).
I initial looked at the distributed version of FFTW. However, the layout of my data does not conform to the layout used by FFTW. Therefore, I would need to scatter my data to the layout required by FFTW which would not be ideal. See link for an example using PETSc.
Note, the FFT is not the dominant bottleneck in my computation. I just want to minimize the communication overhead required for the FFT. Does anyone have any suggestions for what I should be using? Is FFTW the optimal approach even when my data does not conform to FFTW layout?