This is the home page for the fftMPI library. It performs 3d or 2d Fast Fourier Transforms (FFTs) in parallel where the FFT grid is distributed across processors.
|Library API||GitHub||Latest features & bug fixes||Open source||.|
The fftMPI library computes 3d and 2d FFTs in parallel as sets of 1d FFTs (via an external library) in each dimension of the FFT grid, interleaved with MPI communication to move data between processors.
The fftMPI library is open-source code, distributed freely under the terms of the modified Berkeley Software Distribution (BSD) License. See this page for more details. It was developed at Sandia National Laboratories, a US Department of Energy facility
The fftMPI library is used in LAMMPS, a parallel molecular dynamics (MD) code, to perform Poisson solves for long-range Coulombic interactions via the particle-particle particle-mesh (PPPM) method. It is also used in SPARTA, a parallel Direct Simulation Monte Carlo (DSMC) code, to perform analyses of turbulent flows.
The fftMPI library replaces the older Parallel FFT Package, which we developed in the late 1990s for LAMMPS. The older package is also available from this download site.
The main author of fftMPI is Steve Plimpton, who can be contacted at sjplimp at sandia.gov. These collaborators have also contributed:
You can send me an email on any of these topics:
Funding to add some features and release fftMPI as a stand-alone library came from DOE's Office of Advanced Scientific Computing Program (OASCR) under the auspices of its Exascale Computing Program (ECP).
Other freely available parallel FFT libraries include:
The release of the SWFFT library, available on GitLab, was also funded by the DOE ECP. SWFFT is a stand-alone version of the FFTs used in HACC, a particle-based cosmology code that models the universe on the largest DOE supercomputers. The HACC project is led by Salman Habib at ANL.
The fftMPI and SWFFT libraries are similar in scope, but also have some algorithmic and feature differences, motivated by their use in different applications (LAMMPS and HACC).