Jump to main content
Nonequispaced fast Fourier transform
Parallel NFFT
Nonequispaced fast Fourier transform 

Parallel NFFT (PNFFT) and parallel FFT (PFFT)

PNFFT and PFFT are parallel software libraries for distributed memory architectures based on MPI. PNFFT computes three-dimensional nonequispaced fast Fourier transforms in parallel and builds on PFFT, a parallel FFT library that extends FFTW. Both libraries were developed by Michael Pippig and are distributed under the GPL; this page was originally part of his homepage.

PNFFT: Parallel NFFT

PNFFT is a parallel software library for the calculation of three-dimensional nonequispaced FFTs. It is available under the GPL. The parallelization is based on MPI. The most recent publication about PNFFT is

  • M. Pippig and D. Potts
    Parallel three-dimensional nonequispaced fast Fourier transforms and their application to particle simulation.
    SIAM J. Sci. Comput. 35(4), C411–C437, 2013. doi pdf BibTeX

Please use this paper as an introduction to PNFFT and for citations.

Downloads

Clone the most recent version of the PNFFT repository from GitHub: https://github.com/mpip/pnfft, or choose an older release from the following list.

PNFFT depends on the FFTW and the PFFT software library. We highly recommend to install the newest version of FFTW with the help of our install scripts (see the tab Install scripts above). Note that these scripts include several performance patches and bugfixes for FFTW.

User manual

The installation of PNFFT is similar to the installation of PFFT. Look at the test cases in the directory tests to learn the interface and usage. You can build the tests via make check. An extended manual is under construction. Therefore, feel free to contact us if you have questions about the installation process or the usage of the interface.

Feedback

Feel free to contact us for any questions, comments, or bug reports! Contact:

Acknowledgements

The development of the PNFFT library was supported by the German Ministry of Education and Research (BMBF) under grant 01IH08001B.

PFFT: Parallel FFT

PFFT is a parallel FFT software library based on MPI and distributed under the GPL. The most recent publication about PFFT is

  • M. Pippig
    PFFT – An extension of FFTW to massively parallel architectures.
    SIAM J. Sci. Comput. 35(3), C213–C236, 2013. doi pdf BibTeX

Please use this paper as an introduction to PFFT and for citations.

Downloads

Clone the most recent version of the PFFT repository from GitHub: https://github.com/mpip/pfft, or choose an older release from the following list.

  • pfft-1.0.8-alpha.tar.gz (December 12, 2014)
    Added extended documentation.
  • pfft-1.0.7-alpha.tar.gz (April 4, 2013)
    Added Fortran 2003 interface.
  • pfft-1.0.6-alpha.tar.gz
    Improved interface, faster tuning.
  • pfft-1.0.5-alpha.tar.gz
    Minor changes related to PNFFT-1.0.3-alpha. Added support for single, double and long double precision.
  • pfft-1.0.4-alpha.tar.gz (update: bugfix in r2c interface on October 21, 2011)
    Added support of the calculation of d-dimensional FFTs on (d-1)-dimensional process meshes. In addition, the library was extended to r2c, c2r and r2r FFTs.
  • pfft-1.0.2-alpha.tar.gz (update: bugfix in Fortran interface on March 8, 2011)
    Added new interface for d-dimensional FFTs (d>2), improved ghost cell creation, a Fortran interface, and several bugfixes.
  • pfft-1.0.1-alpha.tar.gz
    This is a first test version of a parallel three-dimensional FFT software library.

PFFT depends on the FFTW software library. We highly recommend to install the newest version of FFTW with the help of our install scripts (see the tab Install scripts above). Note that these scripts include several performance patches and bugfixes for FFTW.

User manual

A preliminary version of the user manual is available for download:

  • M. Pippig
    PFFT user manual. pdf

The most recent version of the user manual can be generated within the PFFT build tree via make doc. Furthermore, have a look at the example files in the directory tests to get an overview of the interface. The tests can be built with make check.

Python interface

Python wrappers for PFFT are available at https://github.com/MP-Gadget/pfft-python. Many thanks to Yu Feng for his great work.

Feedback

Feel free to contact us for any questions, comments, or bug reports! Contact:

Acknowledgements

The development of the PFFT library was supported by the German Ministry of Education and Research (BMBF) under grant 01IH08001B.

P2NFFT: Particle-Particle–NFFT

The Particle-Particle–NFFT (P2NFFT) is a general framework for particle mesh algorithms based on nonequispaced fast Fourier transforms (NFFT). By appropriate choice of parameters, this framework includes the Particle-Mesh Ewald methods for periodic boundary conditions and the fast summation algorithm for non-periodic boundary conditions.

This method is part of the ScaFaCoS library; visit the official ScaFaCoS homepage for more details. The source code of ScaFaCoS is available on GitHub.

Install scripts

The following scripts simplify the installation of our software. They can be easily adapted to other compilers.

FFTW-3.3.4

Download and install FFTW-3.3.4 in your home directory:

Important: Within these scripts we apply the following patches that have been submitted to FFTW but are not yet included in FFTW-3.3.4:

  • We add two more global transposition algorithms to the planner.
  • We patch the file mpi/transpose-pairwise.c in order to fix a double free bug.

PFFT-1.0.8-alpha

Download and install PFFT-1.0.8-alpha in your home directory (first install FFTW-3.3.4):

PNFFT-1.0.7-alpha

Download and install PNFFT-1.0.7-alpha in your home directory (first install FFTW-3.3.4 and PFFT-1.0.8-alpha):