quantum-espresso/FFTXlib
giacombum ffca6e0b71 remove commented lines 2020-04-28 09:20:34 +01:00
..
examples execution order of the ffts in the scalar case (cftt3ds) changed from 2016-07-07 15:44:16 +00:00
FFTXlib.md Added FORD documentation for test.f90 2016-08-05 09:14:08 +00:00
Makefile - internal new single precision fft driver 2019-05-25 08:39:53 +02:00
README.md Typos and style improvement in README 2018-03-14 10:27:00 +01:00
fft_error.f90 QE made ready to use MPI module instead of mpif.h include file. See the three 2016-11-25 14:11:28 +00:00
fft_fwinv.f90 new FFTXlib based on OpenMP 2020-02-13 16:03:41 +00:00
fft_ggen.f90 fft_set_nl and fft_set_nlm unified in a single routine. mill is optional output. 2018-01-24 07:31:29 +01:00
fft_helper_subroutines.f90 See comments in https://gitlab.com/QEF/q-e/merge_requests/721 2019-12-29 20:39:59 +01:00
fft_interfaces.f90 AGAIN on the develop branch ... 2018-02-08 14:23:10 +01:00
fft_interpolate.f90 define a generic interface for fft_interpolate and move the correspondig routine to FFTXlib 2018-01-08 23:02:08 +01:00
fft_parallel.f90 remove commented lines 2020-04-28 09:20:34 +01:00
fft_param.f90 adding nl and nlm to fft_type 2017-12-24 00:15:56 +01:00
fft_scalar.ARM_LIB.f90 Patch for ARMLIB, courtesy Jason Wood 2017-10-25 16:11:30 +00:00
fft_scalar.DFTI.f90 remove dfti_status from threadprivate 2020-03-16 10:41:06 +00:00
fft_scalar.ESSL.f90 __OPENMP => _OPENMP (set by all OpenMP-aware compilers) 2017-10-25 07:32:10 +00:00
fft_scalar.FFTW.f90 __OPENMP => _OPENMP (set by all OpenMP-aware compilers) 2017-10-25 07:32:10 +00:00
fft_scalar.FFTW3.f90 __OPENMP => _OPENMP (set by all OpenMP-aware compilers) 2017-10-25 07:32:10 +00:00
fft_scalar.SX6.f90 __OPENMP => _OPENMP (set by all OpenMP-aware compilers) 2017-10-25 07:32:10 +00:00
fft_scalar.f90 Misc spelling errors 2017-10-25 20:08:57 +00:00
fft_smallbox.f90 MAJOR restructuring of the FFTXlib library 2017-08-01 20:31:02 +00:00
fft_smallbox_type.f90 MAJOR restructuring of the FFTXlib library 2017-08-01 20:31:02 +00:00
fft_stick.c - internal new single precision fft driver 2019-05-25 08:39:53 +02:00
fft_support.f90 Minor changes to FFTXlib. The only change (marginally) affecting 2019-04-25 21:06:44 +02:00
fft_types.f90 No need for an empty ifdef any longer (Ye Luo) 2020-03-23 22:25:22 +01:00
fftw.c - internal new single precision fft driver 2019-05-25 08:39:53 +02:00
fftw.h - internal new single precision fft driver 2019-05-25 08:39:53 +02:00
fftw_dp.c - adding static in the function declaration as well 2019-05-25 08:54:04 +02:00
fftw_dp.h - internal new single precision fft driver 2019-05-25 08:39:53 +02:00
fftw_interfaces.f90 Missing interfaces for FFTW + misspells, noticed by Anton 2017-08-08 14:17:21 +00:00
fftw_sp.c - adding static in the function declaration as well 2019-05-25 08:54:04 +02:00
fftw_sp.h - internal new single precision fft driver 2019-05-25 08:39:53 +02:00
gen_test_params.py Added option to set max k value used in the definition of g vectors. Added small python script to simplify the definition of command line arguments for fft_test.x. 2018-03-13 18:19:29 +01:00
konst.h - FFT Modules replaced by FFTXlib 2015-11-21 10:37:48 +00:00
make.depend Minor fixes 2019-12-02 11:35:54 +01:00
scatter_mod.f90 remove unnecessary omp master 2020-03-17 22:34:47 +01:00
stick_base.f90 a forgotten deallocation created a serious memory leak when fft is initialized several times. 2017-08-24 15:29:52 +00:00
test.f90 fix an error in taskgroups 2020-03-16 12:28:16 +00:00
test0.f90 new interface to fft calls 2018-01-02 17:45:45 +01:00
tg_gather.f90 missing file in previous commit. 2017-08-02 07:36:06 +00:00

README.md

FFTXlib

Implements real space grid parallelization of FFT and task groups.

Testing and Benchmarking

This library also provides a testing and timing code to asses the performance of your FFT, estimate the scalability and the optimal parameters for your simulation.

To compile the test program, once you have properly configure QE within a parallel environment, go inside the directory FFTXlib and type:

make TEST

Then you can run your FFT tests using command like:

mpirun -np 4 ./fft_test.x -ecutwfc 80 -alat 20  -nbnd 128 -ntg 4

Command line arguments:

-ecutwfc  Plane wave energy cut off
-alat     Lattice parameter (for hard coded lattice structure)
-nbnd     Number of bands (fft cycles)
-ntg      Number of task groups
-av1  x y z    First lattice vector, in atomic units. N.B.: when using -av1, -alat is ignored!
-av2  x y z    Second lattice vector, in atomic units. N.B.: when using -av2, -alat is ignored!
-av3  x y z    Third lattice vector, in atomic units. N.B.: when using -av3, -alat is ignored!
-kmax kx ky kz    Reciprocal lattice vector inside the BZ with maximum norm. Used to calculate max(|G+K|). (2pi/a)^2 units.

A python script to extract the parameters from an output file of pw.x is also available. Example usage:

$ python gen_test_params.py a_pw_output
To analize performances run with:
mpirun -np X ./fft_test.x -ntg Y -ecutwfc 36.7500 -ecutrho 147.0000 -av1 36.6048 0.0 0.0 -av2 -18.3024 31.70067192 0.0 -av3 0.0 0.0 18.3024 -nbnd 400 -gamma .true.

Replace X and Y with appropriate values for your simualtion.