Parallel FFT-based Poisson solver for isolated three-dimensional systems
Reuben D. Budiardja, Christian Y. Cardall · Computer Physics Communications · 2011
We describe an implementation to solve Poissonʼs equation for an isolated system on a unigrid mesh using FFTs. The method solves the equation globally on mesh blocks distributed across multiple processes on a distributed-memory parallel computer. Test results to demonstrate the convergence and scaling properties of the implementation are presented. The solver is offered to interested users as the library PSPFFT. Program title: PSPFFT Catalogue identifier: AEJK_v1_0 Program summary URL: http://cpc.cs.qub.ac.uk/summaries/AEJK_v1_0.html Program obtainable from: CPC Program Library, Queenʼs University, Belfast, N. Ireland Licensing provisions: Standard CPC licence, http://cpc.cs.qub.ac.uk/licence/licence.html No. of lines in distributed program, including test data, etc.: 110 243 No. of bytes in distributed program, including test data, etc.: 16 332 181 Distribution format: tar.gz Programming language: Fortran 95 Computer: Any architecture with a Fortran 95 compiler, distributed memory clusters Operating system: Linux, Unix Has the code been vectorized or parallelized?: Yes, using MPI. An arbitrary number of processors may be used (subject to some constraints). The program has been tested on from 1 up to ∼ 13 000 processors. RAM: Depends on the problem size, approximately 170 MBytes for 483 cells per process. Classification: 4.3, 6.5 External routines: MPI (http://www.mcs.anl.gov/mpi/), FFTW (http://www.fftw.org), Silo (https://wci.llnl.gov/codes/silo/) (only necessary for running test problem). Nature of problem: Solving Poissonʼs equation globally on unigrid mesh distributed across multiple processes on distributed memory system. Solution method: Numerical solution using multidimensional discrete Fourier Transform in a parallel Fortran 95 code. Unusual features: This code can be compiled as a library to be readily linked and used as a blackbox Poisson solver with other codes. Running time: Depends on the size of the problem, but typically less than 1 second per solve.