FFTW

FFTW is a C subroutine library for computing the Discrete Fourier Transform in one or more dimensions, of both real and complex data, of arbitrary input size.

FFTW is free software as defined by the Free Software Foundation and is distributed under the terms of the GNU General Public License. It is callable from Fortran, and works on any platform with a C compiler.

FFTW was developed at MIT by Matteo Frigo and Steven G. Johnson.

Please note: FFTW version 3 is not compatible with version 2, but versions 3.1.1 and 3.0.1 are compatible.

Installed on : Big Ben and rachel.

Big Ben version 3.1.1, 3.0.1, 2.1.5

To use FFTW, prepare a batch job containing commands to do the following:

  • Set up the module command.
  • Load the appropriate module. Several versions are available:

    fftw/3.1.1/pgi   fftw/3.1.1/gcc
    fftw/3.0.1/pgi   fftw/3.0.1/gcc
    fftw/2.1.5/pgi   fftw/2.1.5/gcc

    Our testing shows that for powers of two, the gcc-compiled fftw3 versions are faster than the fftw2 versions. The results are less conclusive with the pgi-compiled versions.

    Note that the gcc libraries must be linked with -lgmalloc.

    module load fftw/3.1.1/gcc      # version 3.1.1, gcc
    module load fftw/3.0.1/gcc      # version 3.0.1, gcc
    module load fftw/2.1.5/pgi      #version 2.1.5, pgi
    
  • Compile with a command like:
    version 3:
    ftn -o prog -I$FFTW_INC prog.f -L$FFTW_LIB \
       -lfftw3 -lgmalloc
    

    This uses double precision and the gcc libraries. For single precision use -lfftw3f. For the pgi libraries, omit -lgmalloc.

    version 2:
    ftn -o prog -I$FFTW_INC prog.f -L$FFTW_LIB -ldfftw
    
    This uses double precision and the pgi libraries. For single precision use -lfftw3f. For the gcc libraries, include -lgmalloc. Note that there are double and single precision versions of all the libraries, as libfftw3[f]*.a.
  • Run the executable with a pbsyod command.

Submit the batch job with a qsub command.

Also see the example jobs.

Rachel versions 3.0.1, 2.1.5

Prepare a job script according to the rachel document. Be sure to set up the module command. Load the appropriate fftw module:

module load fftw3 or module load fftw-3.0.1  for version 3.0.1
module load fftw or module load fftw-2.1.5 for version 2.1.5
Submit the job script with the qsub command.

Also see example jobs.

See also: