2DECOMP Logo Library for 2D pencil decomposition and distributed Fast Fourier Transform

Review on FFT software

Fast Fourier Transform (FFT) provides the basis of many scientific algorithms. There are hundreds of FFT software packages available. In this section, only those closely related to this project are reviewed.

Distributed FFT Packages

There are several open-source packages available which implement 2D-decomposition-based distributed FFTs:

Serial FFT Implementations

Although capable of doing actual FFT computations, 2DECOMP&FFT is mainly designed to performs data management and communications. The actual computations of 1D FFTs are delegated to a 3rd-party FFT library, assuming it is already fully optimised to run on a single CPU core. 2DECOMP&FFT interfaces with almost every popular FFT implementations so users have the freedom to choose their favourite packages.

Here is the list of FFT engines:

Additional FFT engines can be supported when required. In fact, any 3rd-party FFT libraries offering a simple serial 1D FFT function can be wrapped around.


1. Version 3.3 of FFTW contains a brand-new Fortran 2003 interface, as well as the old legacy Fortran interface. A second FFTW implementation based on the new interface is also available in 2DECOMP&FFT. One benefit of the F2003 interface is the guaranteed memory alignment, although this does not seem to make any practical difference.

2. The FFTW 3.x wrapper is distributed as part of the MKL and it is ready to use. There is also a version 2.x wrapper, which is an open-source package that users can compile by themselves. The wrapper actually works! So it was a mistake for the author not to try it first. On the positive side, it is a great pleasure to play with the MKL API which is almost an object-oriented design.