mirror of https://gitlab.com/QEF/q-e.git
- further clean-ups
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12762 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
ec9cd623f7
commit
229940706f
|
@ -34,9 +34,9 @@
|
|||
use gvecs, only: gcutms, gvecs_init
|
||||
use gvecw, only: gkcut, gvecw_init, g2kin_init
|
||||
USE smallbox_subs, ONLY: ggenb
|
||||
USE fft_base, ONLY: dfftp, dffts, dfftb, dfft3d, dtgs
|
||||
USE fft_base, ONLY: dfftp, dffts, dfftb, dfft3d, dtgs, fft_base_info
|
||||
USE fft_smallbox, ONLY: cft_b_omp_init
|
||||
USE stick_set, ONLY: pstickset, smap
|
||||
USE stick_set, ONLY: smap
|
||||
USE control_flags, ONLY: gamma_only, smallmem
|
||||
USE electrons_module, ONLY: bmeshset
|
||||
USE electrons_base, ONLY: distribute_bands
|
||||
|
@ -141,7 +141,16 @@
|
|||
! for a left-handed triplet, ainv is minus the inverse of a)
|
||||
!
|
||||
CALL task_groups_init( dffts, dtgs, ntask_groups )
|
||||
CALL pstickset( gamma_only, dfftp, dffts, ngw_ , ngm_ , ngs_ , ionode, stdout )
|
||||
CALL fft_base_info( ionode, stdout )
|
||||
ngw_ = dffts%nwl( dffts%mype + 1 )
|
||||
ngs_ = dffts%ngl( dffts%mype + 1 )
|
||||
ngm_ = dfftp%ngl( dfftp%mype + 1 )
|
||||
IF( gamma_only ) THEN
|
||||
ngw_ = (ngw_ + 1)/2
|
||||
ngs_ = (ngs_ + 1)/2
|
||||
ngm_ = (ngm_ + 1)/2
|
||||
END IF
|
||||
|
||||
!
|
||||
! ... Initialize reciprocal space local and global dimensions
|
||||
! NOTE in a parallel run ngm_ , ngw_ , ngs_ here are the
|
||||
|
|
|
@ -12,7 +12,6 @@ fft_types.o : fft_support.o
|
|||
fft_types.o : stick_base.o
|
||||
scatter_mod.o : fft_types.o
|
||||
scatter_mod.o : task_groups.o
|
||||
stick_set.o : fft_types.o
|
||||
stick_set.o : stick_base.o
|
||||
task_groups.o : fft_types.o
|
||||
test.o : fft_parallel.o
|
||||
|
|
|
@ -14,18 +14,15 @@
|
|||
! ... initialize FFT descriptors for both dense and smooth grids
|
||||
|
||||
USE stick_base
|
||||
USE fft_types
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
INTEGER, PARAMETER :: DP = selected_real_kind(14,200)
|
||||
|
||||
PRIVATE
|
||||
SAVE
|
||||
|
||||
TYPE(sticks_map) :: smap
|
||||
|
||||
PUBLIC :: pstickset, pstickdealloc
|
||||
PUBLIC :: pstickdealloc
|
||||
PUBLIC :: smap
|
||||
|
||||
!=----------------------------------------------------------------------=
|
||||
|
@ -36,58 +33,6 @@
|
|||
CALL sticks_map_deallocate( smap )
|
||||
END SUBROUTINE pstickdealloc
|
||||
|
||||
|
||||
!=----------------------------------------------------------------------=
|
||||
|
||||
SUBROUTINE pstickset( lgamma, dfftp, dffts, ngw, ngm, ngs, ionode, stdout )
|
||||
|
||||
TYPE(fft_type_descriptor), INTENT(inout) :: dfftp, dffts
|
||||
INTEGER, INTENT(out) :: ngw, ngm, ngs
|
||||
LOGICAL, INTENT(IN) :: ionode, lgamma
|
||||
INTEGER, INTENT(IN) :: stdout
|
||||
!
|
||||
! Initialize task groups descriptor
|
||||
!
|
||||
ngw = dffts%nwl( dffts%mype + 1 )
|
||||
ngs = dffts%ngl( dffts%mype + 1 )
|
||||
ngm = dfftp%ngl( dfftp%mype + 1 )
|
||||
!
|
||||
IF( lgamma ) THEN
|
||||
ngw = (ngw + 1)/2
|
||||
ngs = (ngs + 1)/2
|
||||
ngm = (ngm + 1)/2
|
||||
END IF
|
||||
!
|
||||
IF (ionode) THEN
|
||||
WRITE( stdout,*)
|
||||
IF ( dfftp%nproc > 1 ) THEN
|
||||
WRITE( stdout, '(5X,"Parallelization info")')
|
||||
ELSE
|
||||
WRITE( stdout, '(5X,"G-vector sticks info")')
|
||||
ENDIF
|
||||
WRITE( stdout, '(5X,"--------------------")')
|
||||
WRITE( stdout, '(5X,"sticks: dense smooth PW", &
|
||||
& 5X,"G-vecs: dense smooth PW")')
|
||||
IF ( dfftp%nproc > 1 ) THEN
|
||||
WRITE( stdout,'(5X,"Min",4X,2I8,I7,12X,2I9,I8)') &
|
||||
minval(dfftp%nsp), minval(dffts%nsp), minval(dffts%nsw), &
|
||||
minval(dfftp%ngl), minval(dffts%ngl), minval(dffts%nwl)
|
||||
WRITE( stdout,'(5X,"Max",4X,2I8,I7,12X,2I9,I8)') &
|
||||
maxval(dfftp%nsp), maxval(dffts%nsp), maxval(dffts%nsw), &
|
||||
maxval(dfftp%ngl), maxval(dffts%ngl), maxval(dffts%nwl)
|
||||
END IF
|
||||
WRITE( stdout,'(5X,"Sum",4X,2I8,I7,12X,2I9,I8)') &
|
||||
sum(dfftp%nsp), sum(dffts%nsp), sum(dffts%nsw), &
|
||||
sum(dfftp%ngl), sum(dffts%ngl), sum(dffts%nwl)
|
||||
ENDIF
|
||||
|
||||
IF(ionode) WRITE( stdout,*)
|
||||
|
||||
RETURN
|
||||
END SUBROUTINE pstickset
|
||||
|
||||
|
||||
|
||||
!=----------------------------------------------------------------------=
|
||||
END MODULE stick_set
|
||||
!=----------------------------------------------------------------------=
|
||||
|
|
|
@ -49,7 +49,45 @@
|
|||
|
||||
PUBLIC :: dfftp, dffts, dfft3d, fft_type_descriptor
|
||||
PUBLIC :: dtgs, task_groups_descriptor
|
||||
PUBLIC :: dfftb, fft_box_descriptor
|
||||
PUBLIC :: dfftb, fft_box_descriptor, fft_base_info
|
||||
|
||||
CONTAINS
|
||||
|
||||
|
||||
SUBROUTINE fft_base_info( ionode, stdout )
|
||||
|
||||
LOGICAL, INTENT(IN) :: ionode
|
||||
INTEGER, INTENT(IN) :: stdout
|
||||
!
|
||||
! Display fft basic information
|
||||
!
|
||||
IF (ionode) THEN
|
||||
WRITE( stdout,*)
|
||||
IF ( dfftp%nproc > 1 ) THEN
|
||||
WRITE( stdout, '(5X,"Parallelization info")')
|
||||
ELSE
|
||||
WRITE( stdout, '(5X,"G-vector sticks info")')
|
||||
ENDIF
|
||||
WRITE( stdout, '(5X,"--------------------")')
|
||||
WRITE( stdout, '(5X,"sticks: dense smooth PW", &
|
||||
& 5X,"G-vecs: dense smooth PW")')
|
||||
IF ( dfftp%nproc > 1 ) THEN
|
||||
WRITE( stdout,'(5X,"Min",4X,2I8,I7,12X,2I9,I8)') &
|
||||
minval(dfftp%nsp), minval(dffts%nsp), minval(dffts%nsw), &
|
||||
minval(dfftp%ngl), minval(dffts%ngl), minval(dffts%nwl)
|
||||
WRITE( stdout,'(5X,"Max",4X,2I8,I7,12X,2I9,I8)') &
|
||||
maxval(dfftp%nsp), maxval(dffts%nsp), maxval(dffts%nsw), &
|
||||
maxval(dfftp%ngl), maxval(dffts%ngl), maxval(dffts%nwl)
|
||||
END IF
|
||||
WRITE( stdout,'(5X,"Sum",4X,2I8,I7,12X,2I9,I8)') &
|
||||
sum(dfftp%nsp), sum(dffts%nsp), sum(dffts%nsw), &
|
||||
sum(dfftp%ngl), sum(dffts%ngl), sum(dffts%nwl)
|
||||
ENDIF
|
||||
|
||||
IF(ionode) WRITE( stdout,*)
|
||||
|
||||
RETURN
|
||||
END SUBROUTINE fft_base_info
|
||||
|
||||
!=----------------------------------------------------------------------=!
|
||||
END MODULE fft_base
|
||||
|
|
|
@ -18,20 +18,20 @@ SUBROUTINE data_structure( gamma_only )
|
|||
USE mp_bands, ONLY : me_bgrp, nproc_bgrp, root_bgrp, intra_bgrp_comm, &
|
||||
ntask_groups
|
||||
USE mp_pools, ONLY : inter_pool_comm
|
||||
USE fft_base, ONLY : dfftp, dffts, dtgs
|
||||
USE fft_base, ONLY : dfftp, dffts, dtgs, fft_base_info
|
||||
USE fft_types, ONLY : fft_type_init
|
||||
USE cell_base, ONLY : at, bg, tpiba
|
||||
USE klist, ONLY : xk, nks
|
||||
USE gvect, ONLY : gcutm, gvect_init
|
||||
USE gvecs, ONLY : gcutms, gvecs_init
|
||||
USE stick_set, ONLY : pstickset, smap
|
||||
USE stick_set, ONLY : smap
|
||||
USE gvecw, ONLY : gcutw, gkcut
|
||||
USE io_global, ONLY : stdout, ionode
|
||||
USE task_groups,ONLY : task_groups_init
|
||||
!
|
||||
IMPLICIT NONE
|
||||
LOGICAL, INTENT(in) :: gamma_only
|
||||
INTEGER :: ik, ngm_, ngs_, ngw_
|
||||
INTEGER :: ik, ngm_, ngs_
|
||||
#if defined(__MPI)
|
||||
LOGICAL :: lpara = .true.
|
||||
#else
|
||||
|
@ -66,7 +66,13 @@ SUBROUTINE data_structure( gamma_only )
|
|||
CALL fft_type_init( dffts, smap, "wave", gamma_only, lpara, intra_bgrp_comm, at, bg, gkcut, gcutms/gkcut )
|
||||
CALL fft_type_init( dfftp, smap, "rho", gamma_only, lpara, intra_bgrp_comm, at, bg, gcutm )
|
||||
CALL task_groups_init( dffts, dtgs, ntask_groups )
|
||||
CALL pstickset( gamma_only, dfftp, dffts, ngw_ , ngm_ , ngs_ , ionode, stdout )
|
||||
CALL fft_base_info( ionode, stdout )
|
||||
ngs_ = dffts%ngl( dffts%mype + 1 )
|
||||
ngm_ = dfftp%ngl( dfftp%mype + 1 )
|
||||
IF( gamma_only ) THEN
|
||||
ngs_ = (ngs_ + 1)/2
|
||||
ngm_ = (ngm_ + 1)/2
|
||||
END IF
|
||||
!
|
||||
! on output, ngm_ and ngs_ contain the local number of G-vectors
|
||||
! for the two grids. Initialize local and global number of G-vectors
|
||||
|
|
Loading…
Reference in New Issue