FFTW

FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data. It is portable and performs well on a wide variety of platforms.

Availability and Restrictions

FFTW is available on Glenn, Oakley and Ruby Clusters. The versions currently available at OSC are:

Version Glenn Oakley RUBY notes
2.1   X*    
2.1.5 X(G)*   X(GI)*  
3.1.2 X*      
3.3 X(G) X   Default version on Oakley prior to 09/15/2015
3.3.1 X(G)      
3.3.2 X(I)      
3.3.3   X(I)    
3.3.4   X* X*  
  • X(G): gnu versions only,
  • X(I): intel version only
  • X(GI): available with both gnu and intel
  • X: available with gnu, intel, and pgi
* : Current Default Version (note: FFTW2 and FFTW3 are tracked separately in the module system)

You can use module spider fftw2  or module spider fftw3  to view available modules for a given machine. Feel free to contact OSC Help if you need other versions for your work.

Access

FFTW is available without restriction to all OSC Users

Usage

Set-up

Usage on Glenn

Set-up on Glenn

Initalizing the system for use of the FFTW library is dependent on the system you are using and the compiler you are using. Some of the installations on Glenn also depend on the version of MPI you are using. A successful build of your program will depend on an understanding of what module fits your circumstances. To load the default FFTW3 library on Glenn, run the following command: module load fftw3 . To load a particular version, use  module load name  . For example, use  module load fftw3-3.3.2-intel  to load FFTW3 version 3.3.2 with the Intel Compiler on Glenn. You can use module avail fftw  to view available modules on Glenn.

Building With FFTW

The following environment variables are setup when the FFTW library is loaded:

Variable Use
$FFTW_CFLAGS Use during your compilation step for C programs on Glenn.
$FFTW_FFLAGS Use during your compilation step for Fortran programs on Glenn.
$FFTW_LIBS Use during your link step on Glenn for the sequential version of the library.
$FFTW_MPI_LIBS Use during your link step on Glenn for the MPI version of the library.

Usage on Oakley

Set-up on Oakley

Initalizing the system for use of the FFTW library is dependent on the system you are using and the compiler you are using. Some of the installations on Glenn also depend on the version of MPI you are using. A successful build of your program will depend on an understanding of what module fits your circumstances. To load the default FFTW3 library on Glenn, run the following command: module load fftw3 . To load a particular version, use  module load name  . For example, use  module load fftw3/3.3.3  to load FFTW3 version 3.3.3 on Oakley. You can use module spider fftw  to view available modules on Oakley.

Building With FFTW

The following environment variables are setup when the FFTW library is loaded:

Variable Use
$FFTW3_CFLAGS Use during your compilation step for C programs on Oakley.
$FFTW3_FFLAGS Use during your compilation step for Fortran programson Oakley.
$FFTW3_LIBS Use during your link step on Oakley for the sequential version of the library.
$FFTW3_LIBS_OMP Use during your link step on Oakley for the OpenMP version of the library.
$FFTW3_LIBS_MPI Use during your link step on Oakley for the MPI version of the library.

below is a set of example commands used to build a file called my-fftw.c on Oakley.

module load fftw3
icc $FFTW3_CFLAGS my-fftw.c -o my-fftw $FFTW3_LIBS 
ifort $FFTW3_FFLAGS more-fftw.f -o more-fftw $FFTW3_LIBS

Usage on Ruby

Set-up on Ruby

Initalizing the system for use of the FFTW library is dependent on the system you are using and the compiler you are using. Some of the installations on Glenn also depend on the version of MPI you are using. A successful build of your program will depend on an understanding of what module fits your circumstances. To load the default FFTW3 library on Glenn, run the following command: module load fftw3 . To load a particular version, use  module load name  . For example, use  module load fftw3/3.3.4  to load FFTW3 version 3.3.4 on Ruby. You can use module spider fftw  to view available modules on Ruby.

Building With FFTW

The following environment variables are setup when the FFTW library is loaded:

Variable Use
$FFTW3_CFLAGS Use during your compilation step for C programs on Ruby.
$FFTW3_FFLAGS Use during your compilation step for Fortran programson Ruby.
$FFTW3_LIBS Use during your link step on Ruby for the sequential version of the library.
$FFTW3_LIBS_OMP Use during your link step on Ruby for the OpenMP version of the library.
$FFTW3_LIBS_MPI Use during your link step on Ruby for the MPI version of the library.

below is a set of example commands used to build a file called my-fftw.c on Ruby.

module load fftw3
icc $FFTW3_CFLAGS my-fftw.c -o my-fftw $FFTW3_LIBS 
ifort $FFTW3_FFLAGS more-fftw.f -o more-fftw $FFTW3_LIBS

Further Reading

See Also

Supercomputer: 
Service: