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-1.0.7-alpha.tar.gz (December 18, 2014)
- pnfft-1.0.6-alpha.tar.gz (April 4, 2013)
Added Fortran 2003 interface. - pnfft-1.0.5-alpha.tar.gz
Support of the new PFFT-1.0.6-alpha release and interlaced NFFT. - pnfft-1.0.4-alpha.tar.gz
Fixed a bug in window function interpolation for non-cubic NFFT. - pnfft-1.0.3-alpha.tar.gz
Added implementation of Kaiser-Bessel window function and support of single, double and long double precision. - pnfft-1.0.2-alpha.tar.gz
Support of the new PFFT-1.0.4-alpha release. - pnfft-1.0.1-alpha.tar.gz
This is a first test version of a parallel three-dimensional NFFT software library.
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: michael.pippig.tuc@…
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: michael.pippig.tuc@…
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:
- install_fftw-3.3.4_gcc.sh (GCC compiler)
- install_fftw-3.3.4_bgp.sh (BlueGene/P cross-compiling)
- install_fftw-3.3.4_bgq.sh (BlueGene/Q cross-compiling)
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.cin 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):
- install_pfft-1.0.8-alpha_gcc.sh (GCC compiler)
- install_pfft-1.0.8-alpha_bgp.sh (BlueGene/P cross-compiling)
- install_pfft-1.0.8-alpha_bgq.sh (BlueGene/Q cross-compiling)
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):
- install_pnfft-1.0.7-alpha_gcc.sh (GCC compiler)
- install_pnfft-1.0.7-alpha_bgp.sh (BlueGene/P cross-compiling)
- install_pnfft-1.0.7-alpha_bgq.sh (BlueGene/Q cross-compiling)