NERSC logo National Energy Research Scientific Computing Center
  A DOE Office of Science User Facility
  at Lawrence Berkeley National Laboratory

Fast Fourier Transform Software

The Fast Fourier Transform (FFT) is the fast algorithm to compute the Discrete Fourier Transform. Various FFT software packages are available with differing speeds and workspace requirements.

IBM Engineering and Scientific Subroutine Library (ESSL) (IBM SP)

The ESSL library contains Fourier Transform routines that perform mixed-radix transforms in one, two, and three dimensions. For information on available subroutines and their usage see: ESSL Fourier Transforms Subroutines.

IBM Parallel Engineering and Scientific Subroutine Library (PESSL) (IBM SP)

The Parallel ESSL Library supports the Single Program Multiple Data (SPMD) programming model using the Message Passing Interface (MPI). The Fourier transform subroutines in PESSL perform mixed-radix transforms in two and three dimensions. For information on available subroutines and their usage see PESSL Fourier Transforms (Message Passing).

FFTW (IBM SP)

FFTW is a portable, free, high performance DFT library which implements arbitrary radix, serial and multiple dimensional transforms in serial or parallel (MPI and POSIX threads models). One unique aspect of FFTW is its optional use of self-optimizing strategies, whereby subsequent calls become faster by building on previous timings. Wrapper functions provide a Fortran API to this native C library.

NAG (IBM SP)

The NAG library provides several FFT routines for FFT which work either "in place" (i.e. saving memory) or with workspace arrays (which saves time). Inverse transforms can also be obtained. For information on available subroutines and their usage see: C06-Summation of Series.

IMSL (Jacquard)

FFTs in IMSL are modeled on the Cooley-Tukey algorithm. Three separate subroutines are provided for FFT initialization and for computing forward and backward transforms. For more information on available subroutines and their usage see: Alphabetized list of the IMSL Fortran 77 math libraries and IMSL Math/Library Online User's Guide.

The following table gives some basic information about the FFT routines supported in libraries IBM ESSL/PESSL, NAG and IMSL. Each library has its own strengths and limitations. This table points to the most suitable library, depending on type of transform and various other requirements. The table is divided into four groups depending on the dimensionality of the FFT. They are:

  • One-Dimensional FFT - calculates one FFT in one dimension.
  • Multiple one-dimensional FFT - calculates an FFT in one dimension for each column of a two-dimensional array.
  • Two-Dimensional FFT - calculates one FFT in two dimensions.
  • Three-Dimensional FFT - calculates one FFT in three dimensions.
Abbreviations
Notation Meaning
C-to-C Library contains Complex-to-Complex transforms
C-to-R Library contains Complex-to-Real transforms
R-to-C Library contains Real-to-Complex transforms
I Library contains Inverse transforms
P Library contains Parallel transforms
S Library supports non-unit Stride input
  Library does not contain such transforms
N Number of transform data values

Summary of FFT software

One-dimensional FFT

Type of Transform ESSL PESSL NAG IMSL FFTW
C-to-C     I I I,S,P
R-to-C     I I I,S,P
C-to-R         I,S,P

Multiple One-dimensional

Type of Transform ESSL PESSL NAG IMSL FFTW
C-to-C I,S I,S,P I   I,S,P
R-to-C I,S I,S,P I   I,S,P
C-to-R I,S I,S,P     I,S,P

Two-dimensional

Type of Transform ESSL PESSL NAG IMSL FFTW
C-to-C I,S I,S,P I I I,S,P
R-to-C I,S I,S,P     I,S,P
C-to-R I,S I,S,P     I,S,P

Three-dimensional

Type of Transform ESSL PESSL NAG IMSL FFTW
C-to-C I,S I,S,P I I I,S,P
R-to-C I,S I,S,P     I,S,P
C-to-R I,S I,S,P     I,S,P

The table below gives length restrictions for N and workspace requirements based on one-dimensional complex-to-complex FFTs in libraries IBM ESSL, NAG and IMSL.

Note: The FFT performance for a given value of N depends on the prime factorization of N. Fastest performance is realised for values of N that are products of powers of 2, 3 and 5.

Library N Length Restrictions Workspace Requirements
ESSL N = (2h)(3i)(5j)(7k)(11m)

for N <= 37748736

where:

h = 1, 2, ..., 25

i = 0, 1, 2

j, k, m = 0, 1
2.28N + 40000 for N > 8192 
        40000 for N <= 8192
Also see: ESSL Documentation
NAG N = (2g)(3h)(5i)(7j)(11k)(13l)(17m)(19n)

where:

g+h+i+j+k+l+m+n < 20
none; N for greater speed
IMSL None 6N+15
FFTW None
FFTW is best at handling sizes N = 2a 3b 5c 7d 11e 13f, where e+f is either 0 or 1, and the other exponents are arbitrary. Other sizes are handled by a general O(n lg n) routine.
none;
N for greater speed; N=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 32, 64 can be done fast in place.

LBNL Home
Page last modified: Fri, 30 Mar 2007 22:06:00 GMT
Page URL: http://www.nersc.gov/nusers/resources/software/libs/math/fft/
Web contact: webmaster@nersc.gov
Computing questions: consult@nersc.gov

Privacy and Security Notice
DOE Office of Science