Computational Science Stack Exchange is a question and answer site for scientists using computers to solve scientific problems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
I could construct a multi-dimensional transform using multiple 1d FFTW transforms. I don't know if this is the most efficient way of doing this though. – Eldila Feb 11 '13 at 6:36
I came across an FFT developed at the Sandia National Laboratories which might have some potential. – Eldila Feb 11 '13 at 6:44
up vote 6 down vote accepted

Michael Pippig at the University of Chemnitz (Germany) has implemented an MPI-parallelized FFT that uses FFTW in the background. This might help you:

It is using the algorithm proposed by Plimpton from Sandia National Labs as suggested by Eldila's comment.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.