jabbaqin / p3dfft

Automatically exported from code.google.com/p/p3dfft
GNU General Public License v3.0
0 stars 0 forks source link

P3DFFT - Highly scalable parallel 3D Fast Fourier Transforms library

Version 2.6

Copyright (C) 2006-2013 Dmitry Pekurovsky Copyright (C) 2006-2013 University of California Copyright (C) 2010-2011 Jens Henrik Goebbert San Diego Supercomputer Center/UC SanDiego


Notice

! P3DFFT is free software: you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation, either version 3 of the License, or ! (at your option) any later version. ! P3DFFT is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! ! GNU General Public License for more details. ! You should have received a copy of the GNU General Public License ! along with P3DFFT. If not, see http://www.gnu.org/licenses/.


Features

* Parallel implementation of 3D FFT with 2D (a.k.a. pencils) data 

decomposition, overcoming an important limitation to scalability of other 3D FFT libraries implementing 1D, or slab, decomposition.

The 1D decomposition suffers from the limitation that the number of processors used cannot be greater than the maximum linear grid size of the cubic domain to be processed. With the 2D domain decomposition scheme the maximum number of processors is significantly higher, equal to the square of the linear grid size.

This library is especially suited for large-data-volume applications on ultra-scale parallel platforms.


Machine requirements

This library is built on top of an externally provided 1D FFT library. Current choices are ESSL (for IBM systems) or FFTW. Either one of these libraries must be installed on the system in order to use P3DFFT. The choice of the library is specified at compile time.

P3DFFT is written in Fortran 90 with MPI. Having an Fortran90/MPI compiler is essential to building the library on your system. C interface is provided.

P3DFFT currently supports compilation by PGI, Intel, GCC and IBM compilers. Additional support for other compilers will be added in the future.


Directory structure

build/ The library files are contained here. Building the library is required before it can be used. In order to build the library, you must run ./configure from the top level directory. Then type "make" and then "make install". For further instructions on building the library see the P3DFFT User Guide, or visit the web site http://code.google.com/p/p3dfft. You can also see a list of options by typing "./configure --help". sample/ This directory has example programs in both FORTRAN and C, in separate subdirectories. Tests provided include out-of-place and in-place transforms 3D FFT, with error checking. Also provided is an example of power spectrum calculation. Example programs will be compiled automatically with the library during make. include/ The library is provided as a Fortran module. After installation this directory will have p3dfft.mod (for Fortran interface), p3dfft.h (the C wrapper/include file), and config.h (header generated by configure script that contains all arguments used when configure script was executed).


Feedback

Please send your feedback, including bugs and suggestions, to Dmitry Pekurovsky, dmitry@sdsc.edu, or visit the P3DFFT web site at http://code.google.com/p/p3dfft and open an issue ticket.