Skip to content

Latest commit

 

History

History

mpi

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
This directory contains the code for the MPI distributed-memory support in
FFTW.  See the MPI section of the FFTW manual for more detail.

Currently, this code is still somewhat experimental.  It has not been
extensively tested and may still have bugs, and is missing a few other
things:

 * There is no Fortran-callable interface yet.

 * There is no support for 1d r2c/c2r transforms (real-data DFTs).
   (Most likely, this feature will *not* be present in FFTW 3.2;
   currently, we only plan to support 1d complex DFTs in MPI.)

 * There is no 'make check' script to run a random battery of tests.

However, you can run some tests and benchmarks by using the mpi-bench
program that is compiled in this directory (by 'make', assuming that
you configure --enable-mpi).  This program has the same command-line
syntax as the tests/bench program (see tests/README).

For example, supposing that your MPI implementation has a command
called "mpirun" to run MPI programs, you might do:

	mpirun -np 4 ./mpi-bench -v -y 100x100 -y r40x50 -y i10x10x10

to check the correctness (-y) of a 100x100 complex DFT, a 40x50
real-input DFT, and a 10x10x10 in-place complex DFT, using 4 processes
(-np 4) with verbose (-v) output.  If it is successful, it will output
three lines like:

	2.95151e-16 7.10543e-16 7.53409e-16
	3.12137e-16 4.76647e-16 5.96738e-16
	3.038e-16 5.61733e-16 3.31469e-16

which are a measure of the floating-point error in these transforms.
(Your actual numbers may differ, but should be of the same magnitude,
assuming double precision.)

If you omit the "-y" it will run a benchmark instead.  For example,

	./mpirun -np 4 ./mpi-bench 100x100 r40x50 i10x10x10

will output benchmark results for the same four transforms using 4
processes.  Note that these transforms are probably too small to
benefit from parallelization (the communications overhead will
outweigh the computational gain), but you can of course increase the
transform size to be benchmarked.

Running correctness tests (-y) on very large transform sizes is
expensive (both in time and memory) and probably unnecessary.  Running
benchmark tests on large sizes is perfectly reasonable, however.

By default, ./mpi-bench uses the FFTW_MEASURE planner.  To use the
FFTW_PATIENT planner, you can run ./mpi-bench -opatient instead.