mpi
Folders and files
Name | Name | 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.