c2c vs r2c FFTs

Dear all,

I have recently read in the FFTW manual that the one dimensional r2c (real to complex) FFT is roughly twice as fast as the one dimensional c2c.
Is there a reason why the use of r2c FFTs is prohibitive or disadvantageous in LAMMPS?

Best regards,

Rolf

Dear all,

I have recently read in the FFTW manual that the one dimensional r2c (real to complex) FFT is roughly twice as fast as the one dimensional c2c.
Is there a reason why the use of r2c FFTs is prohibitive or disadvantageous in LAMMPS?

well, have you looked up *how* this is done?

basically, you still do a c2c FFT,. but rather
than padding your data with zeroes, now you
store half of the data in the imaginary part of
your input and then do the FFT.

so the 2x speedup comes from not padding
the real data with zeroes to make it complex
and thus "double" the amount of data (but not
information) you transform.

how do you know that lammps doesn't do
the same "trick" already? :wink:

that being said, the importance of the FFT
speed for the overall performance depends
a lot on how many processors you use.
the more processors you use, the less
important it gets, since communication
due to the transposes for the 3d transforms
becomes more important. this, however,
can be sped up by compiling for single
precision FFTs.

cheers,
    axel.

It's been a while since I looked at this,
but my recollection is that when doing a
3d FFT, you would only get the 2x savings
on the first 1d FFT to do it in real vs complex.
After that, the remaining computation (for
the other 2 dims) and
communication is the full complex representation.

So the savings is minimal, but I could be wrong.

Steve