Co-design at POP CoE project


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.