GithubHelp home page GithubHelp logo

00mjk / p3dfft Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sdsc/p3dfft

0.0 0.0 0.0 3.29 MB

P3DFFT stands for Parallel Three-Dimensional Fast Fourier Transforms. It is a library for large-scale computer simulations on parallel platforms. It implements 3D FFT and related algorithms such as Chebyshev transform (an important class of algorithm for simulations in a wide range of fields). P3DFFT uses 2D, or pencil, decomposition. For more information:

Home Page: http://www.p3dfft.net

License: Other

Fortran 23.26% Shell 4.01% C 0.03% Makefile 4.17% M4 1.42% Python 1.92% C++ 0.71% Roff 64.47%

p3dfft's Introduction

P3DFFT - Highly scalable parallel 3D Fast Fourier Transforms library

Version 2.7

Copyright (C) 2006-2015 Dmitry Pekurovsky
Copyright (C) 2006-2015 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.
    * Optimized for parallel communication and single-CPU performance.
    * Uses established libraries (FFTW, ESSL) for underlying local 1D FFT. 
    * Fortran and C interfaces.
    * Pruned input/output options
    * User-defined communicator

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 
  https://github.com/sdsc/p3dfft/wiki/install. 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, [email protected], or open an issue on github 
(https://github.com/sdsc/p3dfft/issues/new). 




p3dfft's People

Contributors

cyrillebonamy avatar dmitrypek avatar hansae97 avatar jytang avatar tommy-engels avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.