## FFTXlib

Program's name: FFTXlib

Available version(s):
FFTXlib (2.0) ·
FFTXlib (ompss) ·

Programming language(s):
Fortran ·

Programming model(s):
MPI ·
OpenMP ·

Uses following algorithm(s):
Fast Fourier Transformation ·

Used in following discipline(s):
Density Functional Theory ·

FFTXlib is the stand-alone kernel that represents the *Fast Fourier
Transformation* (FFT) algorithm used in the *Quantum ESPRESSO* application, one
of the most used plane-wave *Density Functional Theory* (DFT) codes in the
community of material science. The FFT kernel implements a layered MPI
communication with FFT task groups to split the cost of collective
communication operations to balance the impact on the performance.

The FFTXlib kernel reproduces the FFT code needed when an operator diagonal in
real space should be applied to the wave functions. Since the wave functions
are expressed in the reciprocal space, first a forward transformation is
applied, then the potential is applied and, finally, a backward transformation
is performed. When the FFT task group parallelization is switched on, each MPI
process has only a subset of the *G-vectors* for a given set of *Kohn-Sham*
states. For the computation of the FFT, then, the G-vectors should be
redistributed with an `MPI_Alltoall`

inside the task groups. After this has
been done, the FFT can be computed for the whole wave function. The origin
source code repository is hosted in
GitHub.

The program can be executed using different command line configurable options.
Users may set the plane wave energy cut-off, the lattice parameter, the number
of bands, or the number of task groups (i.e., the MPI grouping policy), by
setting the corresponding command line option when executing the program. In
the program’s root directory, users can find a `README.TEST`

file with the
*building* and the *execution* instructions.