mirror of https://gitlab.com/QEF/q-e.git
![]() In real space processors are organized in a 2D pattern. Each processor owns data from a sub-set of Z-planes and a sub-set of Y-planes. In reciprocal space each processor owns Z-columns that belong to a sub set of X-values. This allows to split the processors in two sets for communication in the YZ and XY planes. In alternative, if the situation allows for it, a task group paralelization is used (with ntg=nyfft) where complete XY planes of ntg wavefunctions are collected and Fourier trasnformed in G space by different task-groups. This is preferable to the Z-proc + Y-proc paralleization if task group can be used because a smaller number of larger ammounts of data are transferred. Hence three types of fft are implemented: ! !! ... isgn = +-1 : parallel 3d fft for rho and for the potential ! !! ... isgn = +-2 : parallel 3d fft for wavefunctions ! !! ... isgn = +-3 : parallel 3d fft for wavefunctions with task group ! !! ... isgn = + : G-space to R-space, output = \sum_G f(G)exp(+iG*R) !! ... fft along z using pencils (cft_1z) !! ... transpose across nodes (fft_scatter_yz) !! ... fft along y using pencils (cft_1y) !! ... transpose across nodes (fft_scatter_xy) !! ... fft along x using pencils (cft_1x) ! !! ... isgn = - : R-space to G-space, output = \int_R f(R)exp(-iG*R)/Omega !! ... fft along x using pencils (cft_1x) !! ... transpose across nodes (fft_scatter_xy) !! ... fft along y using pencils (cft_1y) !! ... transpose across nodes (fft_scatter_yz) !! ... fft along z using pencils (cft_1z) ! ! If task_group_fft_is_active the FFT acts on a number of wfcs equal to ! dfft%nproc2, the number of Y-sections in which a plane is divided. ! Data are reshuffled by the fft_scatter_tg routine so that each of the ! dfft%nproc2 subgroups (made by dfft%nproc3 procs) deals with whole planes ! of a single wavefunciton. ! fft_type module heavily modified, a number of variables renamed with more intuitive names (at least to me), a number of more variables introduced for the Y-proc parallelization. Task_group module made void. task_group management is now reduced to the logical component fft_desc%have_task_groups of fft_type_descriptor type variable fft_desc. In term of interfaces, the 'easy' calling sequences are SUBROUTINE invfft/fwfft( grid_type, f, dfft, howmany ) !! where: !! !! **grid_type = 'Dense'** : !! inverse/direct fourier transform of potentials and charge density f !! on the dense grid (dfftp). On output, f is overwritten !! !! **grid_type = 'Smooth'** : !! inverse/direct fourier transform of potentials and charge density f !! on the smooth grid (dffts). On output, f is overwritten !! !! **grid_type = 'Wave'** : !! inverse/direct fourier transform of wave functions f !! on the smooth grid (dffts). On output, f is overwritten !! !! **grid_type = 'tgWave'** : !! inverse/direct fourier transform of wave functions f with task group !! on the smooth grid (dffts). On output, f is overwritten !! !! **grid_type = 'Custom'** : !! inverse/direct fourier transform of potentials and charge density f !! on a custom grid (dfft_exx). On output, f is overwritten !! !! **grid_type = 'CustomWave'** : !! inverse/direct fourier transform of wave functions f !! on a custom grid (dfft_exx). On output, f is overwritten !! !! **dfft = FFT descriptor**, IMPORTANT NOTICE: grid is specified only by dfft. !! No check is performed on the correspondence between dfft and grid_type. !! grid_type is now used only to distinguish cases 'Wave' / 'CustomWave' !! from all other cases Many more files modified. git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13676 c92efa57-630b-4861-b058-cf58834340f0 |
||
---|---|---|
.. | ||
EXX-wf-example | ||
Restart_example | ||
autopilot-example | ||
example01 | ||
example02 | ||
example03 | ||
example04 | ||
example05 | ||
example06 | ||
example07 | ||
example08 | ||
example09 | ||
README |
README
These are instructions on how to run the examples for CP package. These examples try to exercise all the programs and features of the CP package. If you find that any relevant feature isn't being tested, please contact us (or even better, write and send us a new example). To run the examples, you should follow this procedure: 1) Edit the "environment_variables" file from the main ESPRESSO directory, setting the following variables as needed: BIN_DIR = directory where ESPRESSO executables reside PSEUDO_DIR = directory where pseudopotential files reside TMP_DIR = directory to be used as temporary storage area If you have downloaded the full ESPRESSO distribution, you may set BIN_DIR=$TOPDIR/bin and PSEUDO_DIR=$TOPDIR/pseudo, where $TOPDIR is the root of the ESPRESSO source tree. TMP_DIR must be a directory you have read and write access to, with enough available space to host the temporary files produced by the example runs, and possibly offering high I/O performance (i.e., don't use an NFS-mounted directory). 2) If you want to test the parallel version of ESPRESSO, you will usually have to specify a driver program (such as "poe" or "mpirun") and the number of processors. This can be done by editing PARA_PREFIX and PARA_POSTFIX variables (in the "environment_variables" file). Parallel executables will be run by a command like this: $PARA_PREFIX cp.x $PARA_POSTFIX < file.in > file.out For example, if the command line is like this (as for an IBM SP): poe cp.x -procs 4 < file.in > file.out you should set PARA_PREFIX="poe", PARA_POSTFIX="-procs 4". See section "Running on parallel machines" of the user guide for details. Furthermore, if your machine does not support interactive use, you must run the commands specified below through the batch queueing system installed on that machine. Ask your system administrator for instructions. 3) To run a single example, go to the corresponding directory (for instance, "example/example01") and execute: ./run_example (except for example 04, see below) This will create a subdirectory "results", containing the input and output files generated by the calculation. Some examples take only a few seconds to run, while others may require several minutes depending on your system. 4) In each example's directory, the "reference" subdirectory contains verified output files, that you can check your results against. The reference results were generated on a Linux PC with Intel compiler. On different architectures the precise numbers could be slightly different, in particular if different FFT dimensions are automatically selected. For this reason, a plain "diff" of your results against the reference data doesn't work, or at least, it requires human inspection of the results. ----------------------------------------------------------------------- LIST AND CONTENT OF THE EXAMPLES example01: This example shows how to use cp.x to perform molecular dynamics simulation of SiO2. example02: This example shows how to use cp.x to perform molecular dynamics simulation of H2O. example03: This example shows how to use cp.x to perform molecular dynamics simulation of NH3. example04: This example shows how to use cp.x to perform molecular dynamics simulation of medium to large systems. This example consists in calculations with 32, 64, 128, 256 water molecules and takes a long time to execute. To run a calculation with up to N molecules, use: ./run_example N Note that "./run_example" alone does nothing. example05: This example shows how to use cp.x to calculate Wannier functions and to perform dynamics with an external electric field. (contributed by Manu Sharma) example06: Additional example of calculation of Wannier functions with cp.x, using the Jacobi Rotation algorithm for localizing Wannier functions (contributed by IRRMA, Lausanne) example07: This example shows how to use cp.x to perform TPSS metaGGA calculations for C4H6 example08: This example shows how to perform Born-Oppenheimer molecular dynamics with conjugate gradient algorithm for the electronic states and ensemble-DFT for treating metallic systems. It is a simple Si dimer. example09: This example shows how to use cp.x to perform molecular dynamics in the presence of an electric field described through the modern theory of the polarization. The example shows how to calculate high-frequency and static dielectric constants and Born effective charges. Additional feature-specific examples: autopilot-example: This example (a water molecule) shows how to use cp.x to perform molecular dynamics with variable parameters using AUTOPILOT. Restart_example: This example shows how to use cp.x together with pw.x to perform an electronic minimization at Gamma for SiO2.