The Python package mpi4py-fft is a tool primarily for working with Fast Fourier Transforms (FFTs) of (large) multidimensional arrays. There is really no limit as to how large the arrays can be, just as long as there is sufficient computing powers available. Also, there are no limits as to how transforms can be configured. Just about any combination of transforms from the FFTW library is supported. Finally, mpi4py-fft can also be used simply to distribute and redistribute large multidimensional arrays with MPI, without any transforms at all.
The main contribution of mpi4py-fft can be found in just a few classes in the main modules:
mpifft.PFFT class is the major entry point for most users. It is a
highly configurable class, which under the hood distributes large dataarrays and
performs any type of transform, along any axes of a multidimensional array.
pencil module is responsible for global redistributions through MPI.
However, this module is rarely used on its own, unless one simply needs to do
global redistributions without any transforms at all. The
is used heavily by the
distarray module contains classes for simply distributing
multidimensional arrays, with no regards to transforms. The distributed arrays
created from the classes here can very well be used in any MPI application that
requires a large multidimensional distributed array.
fftw module contains wrappers to the transforms provided by the
FFTW library. We provide our own wrappers mainly
because pyfftw does not include support
for real-to-real transforms. Through the interface in
fftw we can do
here, in Python, pretty much everything that you can do in the original