Parallel fast Fourier transforms
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
api update Fortran 2003 interface Nov 26, 2015
build-aux convert PFFT from ScaFaCoS subdir into submodule Jun 11, 2014
conf try to fix travis ci build Jul 16, 2016
doc minor: fix typos Jul 12, 2016
gcell add configure option for synchronized timings Mar 26, 2015
kernel prevent potenital memory leak if function returns due to non-matching… Oct 26, 2016
m4 add threads only if enabled by configure Apr 18, 2017
scripts update install script, make it more flexible Jun 30, 2015
tests cleanup OpenMP test programs Apr 18, 2017
.gitignore convert PFFT from ScaFaCoS subdir into submodule Jun 11, 2014
.travis.yml fix travis-ci email notifications Aug 19, 2017
AUTHORS clean up Feb 7, 2013
CONVENTIONS update README Dec 9, 2014
COPYING clean up Feb 7, 2013
ChangeLog clean up Feb 7, 2013
INSTALL clean up Feb 7, 2013 update and install pkg-config data Jul 22, 2016
NEWS clean up Feb 7, 2013
README.rst convert README to rst style Jul 22, 2016
TODO clean up Feb 7, 2013 setup Travis CI build server Sep 8, 2015 simplify OpenMP support May 5, 2015 clean up Feb 7, 2013 update and install pkg-config data Jul 22, 2016


PFFT - Massively Parallel FFT based on FFTW3

Build Status


PFFT is a software library for computing massively parallel, fast Fourier transformations on distributed memory architectures. PFFT can be understood as a generalization of FFTW-MPI to multidimensional data decomposition. The library is written in C and MPI. A Fortran interface is also available. Support for hybrid parallelization based on OpenMP and MPI is under development.


At first, you need an install of FFTW-3.3 with enabled MPI support. We highly recommend to install the latest release of FFTW since the MPI code got several bugfixes in the last releases. Since some fixes are still pending until release FFTW-3.3.5. we offer some helpful scripts for installing FFTW-3.3.4 together with two patches (one bugfix and one performance improvement) at our sofware page

The install of PFFT follows the typical steps:

make install

Optionally, a bunch of test programs can be built with:

make check

The bootstrap step can be skipped if you delivered a PFFT tarball, i.e., the file configure was already generated. Make sure that configure can find a working install of FFTW-3.3 with MPI support, i.e., set:




depending on your system architecture.


PFFT tarballs include a detailed user guide at:


If you have cloned the PFFT repository, the user manual is automatically built during make. Of course this requires a working LaTeX enviroment. Alternatively, you can download a recent version of the user manual at

Note that using PFFT is very similar to FFTW. The interface is as close to the fftw_mpi interface as possible. Therefore, it is a good start to read FFTW manual:

At least you should understand how FFTW deals with distributed memory FFTs:

Next, you can have a look at the test programs in directory 'tests' to learn the details of the PFFT interface.

For installation instructions, you can also refer to the file INSTALL in this directory.

For an theoretical introduction, please read the paper

''PFFT - An Extension of FFTW to Massively Parallel Architectures''

available at

This is the most current general paper, and the one that we recommend if you wish to cite PFFT.

Python interface

A python interface is available at a distinct repository

Many thanks to Yu Feng for his great work.

Directory structure

aclocal.m4 Macros for configure script
api (dir) Source code for user interface
AUTHORS Information about the authors of PFFT Bootstrap shell script that call Autoconf and friends in order to generate configure
build-aux (dir) Used by configure script
ChangeLog A short version history Used by configure script
configure Configure script build from by Autoconf configure script template
CONVENTIONS Makro naming conventions for developers
COPYING Information about redistributing PFFT
doc (dir) User and developer documentation Used by configure script (Fortran definitions)
gcell (dir) Source code for ghost cell support
include (dir) Header files
INSTALL Installation instructions
kernel (dir) Source code for core library routines
m4 (dir) Contains macros for configure script Automake Makefile template Makefile template generated from, processed by configure script
NEWS New and noteworthy Template for PFFT package information
README This file
scripts (dir) A collection of useful script files
tests (dir) Simples examples for using PFFT routines
TODO Current work to be done
util (dir) Source code for auxilliary routines


Your comments are welcome! This is the first version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them to

Michael Pippig <>

If you find PFFT useful, we would be delighted to hear about what application you are using PFFT for!