Skip to content

Simple parallel FFT library for N-dimensional data distributed on a M-dimensional toroidal network of processes (N>M).

Notifications You must be signed in to change notification settings

ggscorzato/ggfft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is the README file of the ggfft library

This library is a simple parallel FFT library for data distributed on a M-dimensional toroidal network of 
p_1 x... x p_M processes.  It combines a serial N-dimensional (N>M) FFT (serial_multidim_fft), which is a slight
modification of the Numerical Recipes function "fourn", together with a generalized transposition (transpose()), that
exchange the data with MPI.  No HW specific optimization is attempted, neither in the serial FFT step, nor in the
transposition. I wrote it because I could not find any reliable FFT for a torus of general dimension M in which
N-dimensional (N>M) data are distributed.

Compiling the library:
edit Makefile if necessary (compilers etc...)
make

Using the library:
The user should declare a plan:
    gg_plan myplan;
and call three routines:
    gg_init_plan(&myplan,...) for each plan to be used
    gg_distributed_multidim_fft(&myplan,...), which actually does the FFT
    gg_destroy_plan(&myplan,...) to free the allocated memory
The user should also include the header file "ggfft.h" and link the executable to libggfft.a


Limitation:
-No optimization on the serial FFT is attempted (it is essentially the fourn routine of Numerical Recipes)
-The serial FFT is limited to data lengths of power of 2.
-communication in transpose does not really exploit the topology of the torus.
-dimension of the data should be larger than the dimension of the torus.

About

Simple parallel FFT library for N-dimensional data distributed on a M-dimensional toroidal network of processes (N>M).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published