- 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:
ccavazzoni 2016-08-16 22:51:37 +00:00
parent ec9cd623f7
commit 229940706f
5 changed files with 62 additions and 65 deletions

View File

@ -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

View File

@ -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

View File

@ -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
!=----------------------------------------------------------------------=

View File

@ -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

View File

@ -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