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 Oakley, Ruby, and Owens Clusters. The versions currently available at OSC are:

Version OAKLEY RUBY Owens notes
2.1 X*      
2.1.5   X(GI)*    
3.1.2        
3.3 X     Default version on Oakley prior to 09/15/2015
3.3.1        
3.3.2        
3.3.3 X(I)      
3.3.4 X* X* X(GI)*  
  • 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 on Oakley

Set-up

Initalizing the system for use of the FFTW library is dependent on the system you are using and the compiler you are using. A successful build of your program will depend on an understanding of what module fits your circumstances. 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. You can use module spider fftw  to view available modules.

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.
$FFTW3_FFLAGS Use during your compilation step for Fortran programs.
$FFTW3_LIBS Use during your link step for the sequential version of the library.
$FFTW3_LIBS_OMP Use during your link step for the OpenMP version of the library.
$FFTW3_LIBS_MPI Use during your link step for the MPI version of the library.

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

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

Initalizing the system for use of the FFTW library is dependent on the system you are using and the compiler you are using.  A successful build of your program will depend on an understanding of what module fits your circumstances. 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. You can use module spider fftw  to view available modules.

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.
$FFTW3_FFLAGS Use during your compilation step for Fortran programs.
$FFTW3_LIBS Use during your link step for the sequential version of the library.
$FFTW3_LIBS_OMP Use during your link step for the OpenMP version of the library.
$FFTW3_LIBS_MPI Use during your link step for the MPI version of the library.

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

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 Owens

Set-up

Initalizing the system for use of the FFTW library is dependent on the system you are using and the compiler you are using. A successful build of your program will depend on an understanding of what module fits your circumstances. 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. You can use module spider fftw  to view available modules.

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.
$FFTW3_FFLAGS Use during your compilation step for Fortran programs.
$FFTW3_LIBS Use during your link step for the sequential version of the library.
$FFTW3_LIBS_OMP Use during your link step for the OpenMP version of the library.
$FFTW3_LIBS_MPI Use during your link step for the MPI version of the library.
$FFTW3_LIBS_THREADS Use during your link step for the "threads" version of the library.

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

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: