Commit 3fcc01b4 authored by giannozz's avatar giannozz

Variables for task group (actually a single one) moved to where it belongs

(I think): mp_bands.f90 . Many changes but nothing dangerous. Note that 
codes not in svn may be broken by this change, but the fix is very simple


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@10567 c92efa57-630b-4861-b058-cf58834340f0
parent 6becfe1a
......@@ -53,14 +53,15 @@ MODULE cp_restart
USE control_flags, ONLY : tksw, lwfpbe0nscf, lwfnscf ! Lingzhu Kong
USE io_files, ONLY : psfile, pseudo_dir, iunwfc, &
nwordwfc, tmp_dir, diropn
USE mp_global, ONLY : intra_image_comm, me_image, &
nproc_image, &
nproc_pool, intra_pool_comm, &
me_bgrp, nproc_bgrp, &
USE mp_images, ONLY : intra_image_comm, me_image, &
nproc_image
USE mp_pools, ONLY : nproc_pool, intra_pool_comm
USE mp_bands, ONLY : me_bgrp, nproc_bgrp, &
my_bgrp_id, intra_bgrp_comm, &
inter_bgrp_comm, root_bgrp
USE mp_global, ONLY : nproc_pot, nproc_bgrp, nproc_ortho, &
get_ntask_groups
inter_bgrp_comm, root_bgrp, &
ntask_groups
USE mp_pots, ONLY : nproc_pot
USE mp_diag, ONLY : nproc_ortho
USE mp_world, ONLY : world_comm, nproc
USE run_info, ONLY : title
USE gvect, ONLY : ngm, ngm_g
......@@ -158,7 +159,6 @@ MODULE cp_restart
CHARACTER(LEN=256) :: wfc_dir
LOGICAL :: exst
INTEGER :: inlc
INTEGER :: ntask_groups
!
! ... subroutine body
!
......@@ -400,7 +400,6 @@ MODULE cp_restart
! ... PARALLELISM
!-------------------------------------------------------------------------------
!
ntask_groups=get_ntask_groups()
CALL write_para( kunit, nproc, nproc_pool, nproc_image, ntask_groups, &
nproc_pot, nproc_bgrp, nproc_ortho )
!
......
......@@ -42,8 +42,8 @@
USE electrons_module, ONLY: bmeshset
USE electrons_base, ONLY: distribute_bands
USE problem_size, ONLY: cpsizes
USE mp_global, ONLY: me_bgrp, root_bgrp, nproc_bgrp, nbgrp, my_bgrp_id, intra_bgrp_comm
USE mp_global, ONLY: get_ntask_groups
USE mp_bands, ONLY: me_bgrp, root_bgrp, nproc_bgrp, nbgrp, &
my_bgrp_id, intra_bgrp_comm, ntask_groups
USE uspp, ONLY: okvan, nlcc_any
implicit none
......@@ -51,7 +51,7 @@
integer :: i
real(dp) :: rat1, rat2, rat3
real(dp) :: bg(3,3), tpiba2
integer :: ng_, ngs_, ngm_ , ngw_ , nogrp_
integer :: ng_, ngs_, ngm_ , ngw_
CALL start_clock( 'init_dim' )
......@@ -109,10 +109,10 @@
! ... set the sticks mesh and distribute g vectors among processors
! ... pstickset lso sets the local real-space grid dimensions
!
nogrp_ = get_ntask_groups()
CALL pstickset( gamma_only, bg, gcutm, gkcut, gcutms, &
dfftp, dffts, ngw_ , ngm_ , ngs_ , me_bgrp, root_bgrp, nproc_bgrp, intra_bgrp_comm, nogrp_ )
dfftp, dffts, ngw_ , ngm_ , ngs_ , me_bgrp, root_bgrp, &
nproc_bgrp, intra_bgrp_comm, ntask_groups )
!
!
! ... Initialize reciprocal space local and global dimensions
......
......@@ -34,10 +34,9 @@ USE ions_base, ONLY: na !number of atoms within each at
USE ions_base, ONLY: ityp !ityp(i):=type/species of ith atom
USE ions_base, ONLY: atm !atm(j):=name of jth atomic species (3 characters)
USE kinds, ONLY: DP !double-precision kind (selected_real_kind(14,200))
USE mp_global, ONLY: nproc_image !number of processors
USE mp_global, ONLY: me_image !processor number (0,1,...,nproc_image-1)
USE mp_global, ONLY: intra_image_comm !standard MPI communicator
USE mp_global, ONLY: get_ntask_groups !retrieve number of task groups
USE mp_images, ONLY: nproc_image !number of processors
USE mp_images, ONLY: me_image !processor number (0,1,...,nproc_image-1)
USE mp_images, ONLY: intra_image_comm !standard MPI communicator
USE mp_world, ONLY: world_comm !world communicator, not the same as MPI_COMM_WORLD!
USE mp, ONLY: mp_sum !MPI collection with sum
USE parallel_include !MPI header
......
......@@ -54,11 +54,11 @@ SUBROUTINE phq_readin()
USE ldaU, ONLY : lda_plus_u
USE control_flags, ONLY : iverbosity, modenum, twfcollect,io_level
USE io_global, ONLY : ionode, stdout
USE mp_global, ONLY : nproc_pool, nproc_pool_file, &
nimage, my_image_id, &
nproc_image_file, nproc_image, npool, &
get_ntask_groups, ntask_groups_file, &
nproc_bgrp_file
USE mp_global, ONLY : nproc_pool_file, nproc_image_file, &
ntask_groups_file, nproc_bgrp_file
USE mp_images, ONLY : nimage, my_image_id, nproc_image
USE mp_pools, ONLY : nproc_pool, npool
USE mp_bands, ONLY : ntask_groups
USE paw_variables, ONLY : okpaw
USE ramanm, ONLY : eth_rps, eth_ns, lraman, elop, dek
USE freq_ph, ONLY : fpol, fiu, nfs
......@@ -499,7 +499,7 @@ SUBROUTINE phq_readin()
CALL errore('phq_readin',&
'pw.x run with a different number of pools. Use wf_collect=.true.',1)
IF (get_ntask_groups() > 1) &
IF (ntask_groups > 1) &
CALL errore('phq_readin','task_groups not available in phonon',1)
IF (nproc_bgrp_file /= nproc_pool_file) &
......
......@@ -13,12 +13,11 @@ MODULE environment
USE kinds, ONLY: DP
USE io_files, ONLY: crash_file, nd_nmbr
USE io_global, ONLY: stdout, meta_ionode
USE mp_global, ONLY: get_ntask_groups
USE mp_world, ONLY: nproc
USE mp_images, ONLY: me_image, my_image_id, root_image, nimage, &
nproc_image
USE mp_pools, ONLY: npool
USE mp_bands, ONLY: nproc_bgrp, nbgrp
USE mp_bands, ONLY: ntask_groups, nproc_bgrp, nbgrp
USE global_version, ONLY: version_number, svn_revision
IMPLICIT NONE
......@@ -205,9 +204,9 @@ CONTAINS
'(5X,"band groups division: nbgrp = ",I7)' ) nbgrp
IF ( nproc_bgrp > 1 ) WRITE( stdout, &
'(5X,"R & G space division: proc/nbgrp/npool/nimage = ",I7)' ) nproc_bgrp
IF ( get_ntask_groups() > 1 ) WRITE( stdout, &
IF ( ntask_groups > 1 ) WRITE( stdout, &
'(5X,"wavefunctions fft division: fft and procs/group = ",2I7)' ) &
get_ntask_groups(), nproc_bgrp / get_ntask_groups()
ntask_groups, nproc_bgrp / ntask_groups
!
END SUBROUTINE parallel_info
......
......@@ -26,6 +26,10 @@ MODULE mp_bands
INTEGER :: inter_bgrp_comm = 0 ! inter band group communicator
INTEGER :: intra_bgrp_comm = 0 ! intra band group communicator
!
! ... "task" groups (for band parallelization of FFT)
!
INTEGER :: ntask_groups = 1 ! number of proc. in an orbital "task group"
!
! ... The following variables not set during initialization but later
!
INTEGER :: ibnd_start = 0 ! starting band index
......@@ -34,7 +38,7 @@ MODULE mp_bands
CONTAINS
!
!----------------------------------------------------------------------------
SUBROUTINE mp_start_bands( nband_, parent_comm )
SUBROUTINE mp_start_bands( nband_, ntg_, parent_comm )
!---------------------------------------------------------------------------
!
! ... Divide processors (of the "parent_comm" group) into bands pools
......@@ -45,6 +49,7 @@ CONTAINS
IMPLICIT NONE
!
INTEGER, INTENT(IN) :: nband_, parent_comm
INTEGER, INTENT(IN), OPTIONAL :: ntg_
!
INTEGER :: parent_nproc = 1, parent_mype = 0, ierr = 0
!
......@@ -93,6 +98,10 @@ CONTAINS
IF ( ierr /= 0 ) CALL errore( 'init_bands', &
'inter band group communicator initialization', ABS(ierr) )
!
IF ( PRESENT(ntg_) ) THEN
ntask_groups = ntg_
END IF
!
#endif
RETURN
!
......
......@@ -10,8 +10,8 @@ MODULE mp_global
!----------------------------------------------------------------------------
!
! ... Wrapper module, for compatibility. Contains a few "leftover" variables
! ... used for checks (all the *_file variables, read from data file) and for
! ... "task groups", plus the routine mp_startup initializing MPI, plus the
! ... used for checks (all the *_file variables, read from data file),
! ... plus the routine mp_startup initializing MPI, plus the
! ... routine mp_global_end stopping MPI.
! ... Do not use this module to reference variables (e.g. communicators)
! ... belonging to each of the various parallelization levels:
......@@ -37,11 +37,6 @@ MODULE mp_global
INTEGER :: nproc_bgrp_file = 1
INTEGER :: ntask_groups_file= 1
!
! ... "task" groups (for band parallelization of FFT)
!
INTEGER :: ntask_groups = 1 ! number of proc. in an orbital "task group"
PRIVATE :: ntask_groups
!
CONTAINS
!
!-----------------------------------------------------------------------
......@@ -80,8 +75,7 @@ CONTAINS
!
CALL mp_start_pots ( npot_, intra_image_comm )
CALL mp_start_pools ( npool_, intra_image_comm )
CALL mp_start_bands ( nband_, intra_pool_comm )
ntask_groups = ntg_
CALL mp_start_bands ( nband_, ntg_, intra_pool_comm )
CALL mp_start_diag ( ndiag_, intra_bgrp_comm )
!
RETURN
......@@ -96,13 +90,4 @@ CONTAINS
!
END SUBROUTINE mp_global_end
!
!-----------------------------------------------------------------------
FUNCTION get_ntask_groups()
!-----------------------------------------------------------------------
IMPLICIT NONE
INTEGER :: get_ntask_groups
get_ntask_groups = ntask_groups
RETURN
END FUNCTION get_ntask_groups
!
END MODULE mp_global
......@@ -23,7 +23,7 @@ SUBROUTINE d3_readin()
USE noncollin_module, ONLY : noncolin
USE io_files, ONLY : tmp_dir, prefix
USE io_global, ONLY : ionode, ionode_id
USE mp_global, ONLY : nbgrp, get_ntask_groups
USE mp_bands, ONLY : nbgrp, ntask_groups
USE mp, ONLY : mp_bcast
USE mp_world, ONLY : world_comm
!
......@@ -139,16 +139,13 @@ SUBROUTINE d3_readin()
IF (okvan) CALL errore ('d3_readin', 'US not implemented', 1)
IF (noncolin) call errore('d3_readin', &
'd3 is not working in the noncolinear case', 1)
!
IF (get_ntask_groups() > 1) dffts%have_task_groups=.FALSE.
!
! band group not available
!
!
IF (ntask_groups > 1) dffts%have_task_groups=.FALSE.
!
! band group not available
!
IF (nbgrp /=1 ) &
CALL errore('d3_readin','band parallelization not available',1)
!
! There might be other variables in the input file which describe
! partial computation of the dynamical matrix. Read them here
......
......@@ -19,7 +19,7 @@ SUBROUTINE cg_readin()
USE io_files, ONLY : tmp_dir, prefix
USE io_global, ONLY : ionode, ionode_id
USE noncollin_module, ONLY : noncolin
USE mp_global, ONLY : nbgrp, get_ntask_groups
USE mp_bands, ONLY : nbgrp, ntask_groups
USE mp, ONLY : mp_bcast
USE mp_world, ONLY : world_comm
!
......@@ -92,13 +92,13 @@ SUBROUTINE cg_readin()
!
IF (.not. gamma_only) CALL errore('cg_readin', &
'need pw.x data file produced using Gamma tricks',1)
!
! Task groups not used.
!
IF (get_ntask_groups() > 1) dffts%have_task_groups=.FALSE.
!
! band group not available
!
!
! Task groups not used.
!
IF (ntask_groups > 1) dffts%have_task_groups=.FALSE.
!
! band group not available
!
IF (nbgrp /=1 ) &
CALL errore('cg_readin','band parallelization not available',1)
......
......@@ -30,7 +30,7 @@ SUBROUTINE ch_psi_all (n, h, ah, e, ik, m)
USE eqv, ONLY : evq
USE qpoint, ONLY : ikqs
USE mp_global, ONLY : intra_bgrp_comm, get_ntask_groups
USE mp_bands, ONLY : intra_bgrp_comm, ntask_groups
USE mp, ONLY : mp_sum
!Needed only for TDDFPT
......@@ -66,10 +66,10 @@ SUBROUTINE ch_psi_all (n, h, ah, e, ik, m)
INTEGER, ALLOCATABLE :: ibuf(:)
CALL start_clock ('ch_psi')
!
! This routine is task groups aware
!
IF (get_ntask_groups() > 1) dffts%have_task_groups=.TRUE.
!
! This routine is task groups aware
!
IF (ntask_groups > 1) dffts%have_task_groups=.TRUE.
ALLOCATE (ps ( nbnd , m))
ALLOCATE (hpsi( npwx*npol , m))
......
......@@ -275,7 +275,8 @@ SUBROUTINE elphel (irr, npe, imode0, dvscfins)
USE control_ph, ONLY : trans, lgamma, current_iq
USE ph_restart, ONLY : ph_writefile
USE spin_orb, ONLY : domag
USE mp_global, ONLY: intra_bgrp_comm, npool, get_ntask_groups
USE mp_bands, ONLY: intra_bgrp_comm, ntask_groups
USE mp_pools, ONLY: npool
USE mp, ONLY: mp_sum
IMPLICIT NONE
......@@ -291,7 +292,7 @@ SUBROUTINE elphel (irr, npe, imode0, dvscfins)
COMPLEX(DP), EXTERNAL :: zdotc
!
IF (.NOT. comp_elph(irr) .OR. done_elph(irr)) RETURN
IF ( get_ntask_groups() > 1 ) dffts%have_task_groups=.TRUE.
IF ( ntask_groups > 1 ) dffts%have_task_groups=.TRUE.
ALLOCATE (aux1 (dffts%nnr, npol))
ALLOCATE (elphmat ( nbnd , nbnd , npe))
......@@ -359,7 +360,7 @@ SUBROUTINE elphel (irr, npe, imode0, dvscfins)
!
! calculate dvscf_q*psi_k
!
IF ( get_ntask_groups() > 1 ) dffts%have_task_groups=.TRUE.
IF ( ntask_groups > 1 ) dffts%have_task_groups=.TRUE.
IF ( dffts%have_task_groups ) THEN
IF (noncolin) THEN
CALL tg_cgather( dffts, dvscfins(:,1,ipert), tg_dv(:,1))
......@@ -432,7 +433,7 @@ SUBROUTINE elphel (irr, npe, imode0, dvscfins)
DEALLOCATE (elphmat)
DEALLOCATE (aux1)
DEALLOCATE (aux2)
IF ( get_ntask_groups() > 1) dffts%have_task_groups=.TRUE.
IF ( ntask_groups > 1) dffts%have_task_groups=.TRUE.
IF ( dffts%have_task_groups ) THEN
DEALLOCATE( tg_dv )
DEALLOCATE( tg_psic )
......
......@@ -25,7 +25,7 @@ subroutine incdrhoscf (drhoscf, weight, ik, dbecsum, dpsi)
USE wavefunctions_module, ONLY: evc
USE qpoint, ONLY : npwq, igkq, ikks
USE control_ph, ONLY : nbnd_occ
USE mp_global, ONLY : me_bgrp, inter_bgrp_comm, get_ntask_groups
USE mp_bands, ONLY : me_bgrp, inter_bgrp_comm, ntask_groups
USE mp, ONLY : mp_sum
......@@ -55,7 +55,7 @@ subroutine incdrhoscf (drhoscf, weight, ik, dbecsum, dpsi)
! counters
call start_clock ('incdrhoscf')
IF (get_ntask_groups() > 1) dffts%have_task_groups=.TRUE.
IF (ntask_groups > 1) dffts%have_task_groups=.TRUE.
allocate (dpsic( dffts%nnr))
allocate (psi ( dffts%nnr))
wgt = 2.d0 * weight / omega
......
......@@ -28,7 +28,7 @@ subroutine incdrhoscf_nc (drhoscf, weight, ik, dbecsum, dpsi)
USE wavefunctions_module, ONLY: evc
USE qpoint, ONLY : npwq, igkq, ikks
USE control_ph, ONLY : nbnd_occ
USE mp_global, ONLY : me_bgrp, inter_bgrp_comm, get_ntask_groups
USE mp_bands, ONLY : me_bgrp, inter_bgrp_comm, ntask_groups
USE mp, ONLY : mp_sum
implicit none
......@@ -61,7 +61,7 @@ subroutine incdrhoscf_nc (drhoscf, weight, ik, dbecsum, dpsi)
! counters
call start_clock ('incdrhoscf')
IF (get_ntask_groups() > 1 ) dffts%have_task_groups=.TRUE.
IF (ntask_groups > 1 ) dffts%have_task_groups=.TRUE.
allocate (dpsic(dffts%nnr, npol))
allocate (psi (dffts%nnr, npol))
allocate (aux(dfftp%nnr,nspin_mag))
......
......@@ -57,10 +57,10 @@ SUBROUTINE phq_readin()
USE io_global, ONLY : meta_ionode, ionode, ionode_id, stdout
USE mp_images, ONLY : nimage, my_image_id, intra_image_comm, &
me_image, nproc_image
USE mp_global, ONLY : get_ntask_groups, nproc_pool_file, &
USE mp_global, ONLY : nproc_pool_file, &
nproc_bgrp_file, nproc_image_file
USE mp_pools, ONLY : nproc_pool, npool
USE mp_bands, ONLY : nproc_bgrp
USE mp_bands, ONLY : nproc_bgrp, ntask_groups
USE paw_variables, ONLY : okpaw
USE ramanm, ONLY : eth_rps, eth_ns, lraman, elop, dek
USE freq_ph, ONLY : fpol, fiu, nfs
......@@ -599,11 +599,10 @@ SUBROUTINE phq_readin()
IF (nproc_pool /= nproc_pool_file .and. .not. twfcollect) &
CALL errore('phq_readin',&
'pw.x run with a different number of pools. Use wf_collect=.true.',1)
!
! Task groups not used in phonon. Activated only in some places
!
IF (get_ntask_groups() > 1) dffts%have_task_groups=.FALSE.
!
! Task groups not used in phonon. Activated only in some places
!
IF (ntask_groups > 1) dffts%have_task_groups=.FALSE.
IF (nproc_bgrp_file /= nproc_bgrp .AND. .NOT. twfcollect) &
CALL errore('phq_readin','pw.x run with different band parallelization',1)
......
......@@ -32,7 +32,7 @@ SUBROUTINE run_nscf(do_band, iq)
USE grid_irr_iq, ONLY : done_bands
USE acfdtest, ONLY : acfdt_is_active, acfdt_num_der, ir_point, delta_vrs
USE scf, ONLY : vrs
USE mp_global, ONLY : get_ntask_groups
USE mp_bands, ONLY : ntask_groups
!
IMPLICIT NONE
......@@ -111,12 +111,12 @@ SUBROUTINE run_nscf(do_band, iq)
!
bands_computed=.TRUE.
!
! PWscf has run with task groups if available, but in the phonon
! they are not used, apart in particular points. In that case it is
! activated.
!
IF (get_ntask_groups()>1) dffts%have_task_groups=.FALSE.
!
! PWscf has run with task groups if available, but in the phonon
! they are not used, apart in particular points, where they are
! activated.
!
IF (ntask_groups > 1) dffts%have_task_groups=.FALSE.
!
CALL stop_clock( 'PWSCF' )
!
......
......@@ -54,8 +54,8 @@ subroutine solve_e
USE qpoint, ONLY : npwq, nksq
USE recover_mod, ONLY : read_rec, write_rec
USE mp_global, ONLY : inter_pool_comm, intra_bgrp_comm, &
get_ntask_groups
USE mp_pools, ONLY : inter_pool_comm
USE mp_bands, ONLY : intra_bgrp_comm, ntask_groups
USE mp, ONLY : mp_sum
implicit none
......@@ -96,10 +96,10 @@ subroutine solve_e
external ch_psi_all, cg_psi
call start_clock ('solve_e')
!
! This routine is task group aware
!
IF ( get_ntask_groups() > 1 ) dffts%have_task_groups=.TRUE.
!
! This routine is task group aware
!
IF ( ntask_groups > 1 ) dffts%have_task_groups=.TRUE.
allocate (dvscfin( dfftp%nnr, nspin_mag, 3))
if (doublegrid) then
......@@ -219,7 +219,7 @@ subroutine solve_e
! calculates dvscf_q*psi_k in G_space, for all bands, k=kpoint
! dvscf_q from previous iteration (mix_potential)
!
IF ( get_ntask_groups() > 1) dffts%have_task_groups=.TRUE.
IF ( ntask_groups > 1) dffts%have_task_groups=.TRUE.
IF( dffts%have_task_groups ) THEN
IF (noncolin) THEN
CALL tg_cgather( dffts, dvscfins(:,1,ipol), &
......@@ -439,7 +439,7 @@ subroutine solve_e
deallocate (dvscfin)
if (noncolin) deallocate(dbecsum_nc)
deallocate(aux2)
IF ( get_ntask_groups() > 1 ) dffts%have_task_groups=.TRUE.
IF ( ntask_groups > 1 ) dffts%have_task_groups=.TRUE.
IF ( dffts%have_task_groups ) THEN
!
DEALLOCATE( tg_dv )
......
......@@ -64,8 +64,8 @@ SUBROUTINE solve_linter (irr, imode0, npe, drhoscf)
USE dfile_autoname, ONLY : dfile_name
USE save_ph, ONLY : tmp_dir_save
! used oly to write the restart file
USE mp_global, ONLY : inter_pool_comm, intra_bgrp_comm, &
get_ntask_groups, me_bgrp
USE mp_pools, ONLY : inter_pool_comm
USE mp_bands, ONLY : intra_bgrp_comm, ntask_groups, me_bgrp
USE mp, ONLY : mp_sum
!
implicit none
......@@ -141,7 +141,7 @@ SUBROUTINE solve_linter (irr, imode0, npe, drhoscf)
!
! This routine is task group aware
!
IF ( get_ntask_groups() > 1 ) dffts%have_task_groups=.TRUE.
IF ( ntask_groups > 1 ) dffts%have_task_groups=.TRUE.
allocate (dvscfin ( dfftp%nnr , nspin_mag , npe))
if (doublegrid) then
......@@ -298,7 +298,7 @@ SUBROUTINE solve_linter (irr, imode0, npe, drhoscf)
! dvscf_q from previous iteration (mix_potential)
!
call start_clock ('vpsifft')
IF ( get_ntask_groups() > 1 ) dffts%have_task_groups=.TRUE.
IF ( ntask_groups > 1 ) dffts%have_task_groups=.TRUE.
IF( dffts%have_task_groups ) THEN
IF (noncolin) THEN
CALL tg_cgather( dffts, dvscfins(:,1,ipert), &
......@@ -598,7 +598,7 @@ SUBROUTINE solve_linter (irr, imode0, npe, drhoscf)
if (doublegrid) deallocate (dvscfins)
deallocate (dvscfin)
deallocate(aux2)
IF ( get_ntask_groups() > 1) dffts%have_task_groups=.TRUE.
IF ( ntask_groups > 1) dffts%have_task_groups=.TRUE.
IF ( dffts%have_task_groups ) THEN
DEALLOCATE( tg_dv )
DEALLOCATE( tg_psic )
......
......@@ -30,7 +30,7 @@ SUBROUTINE add_bfield (v,rho)
USE cell_base, ONLY : omega
USE fft_base, ONLY : dfftp
USE lsda_mod, ONLY : nspin
USE mp_global, ONLY : intra_bgrp_comm
USE mp_bands, ONLY : intra_bgrp_comm
USE mp, ONLY : mp_sum
USE noncollin_module, ONLY : bfield, lambda, i_cons, mcons, &
pointlist, factlist, noncolin
......
......@@ -54,7 +54,8 @@ SUBROUTINE add_efield(vpoten,etotefield,rho,iflag)
USE io_global, ONLY : stdout,ionode
USE control_flags, ONLY : mixing_beta
USE lsda_mod, ONLY : nspin
USE mp_global, ONLY : intra_image_comm, me_bgrp, intra_bgrp_comm
USE mp_images, ONLY : intra_image_comm
USE mp_bands, ONLY : me_bgrp
USE fft_base, ONLY : dfftp
USE mp, ONLY : mp_bcast, mp_sum
USE control_flags, ONLY : iverbosity
......@@ -115,10 +116,7 @@ SUBROUTINE add_efield(vpoten,etotefield,rho,iflag)
CALL compute_ion_dip(emaxpos, eopreg, edir, ion_dipole)
tot_dipole = -e_dipole + ion_dipole
#ifdef __MPI
CALL mp_bcast(tot_dipole, 0, intra_image_comm)
#endif
!
! E_{TOT} = -e^{2} \left( eamp - dip \right) dip \frac{\Omega}{4\pi}
!
......
......@@ -23,7 +23,7 @@ subroutine addusforce (forcenl)
USE scf, ONLY : v, vltot
USE uspp, ONLY : becsum, okvan
USE uspp_param, ONLY : upf, lmaxq, nh, nhm
USE mp_global, ONLY : intra_bgrp_comm
USE mp_bands, ONLY : intra_bgrp_comm
USE mp, ONLY : mp_sum
USE control_flags, ONLY : gamma_only
USE fft_interfaces,ONLY : fwfft
......@@ -122,9 +122,7 @@ subroutine addusforce (forcenl)
endif
enddo
#ifdef __MPI
call mp_sum ( ddeeq, intra_bgrp_comm )
#endif
! WRITE( stdout,'( "dmatrix atom ",i4)') na
! do ih = 1, nh(nt)
! WRITE( stdout,'(8f9.4)') (ddeeq(ipol,ih,jh,na),jh=1,nh(nt))
......
......@@ -37,7 +37,7 @@ subroutine atomic_rho (rhoa, nspina)
USE wavefunctions_module, ONLY : psic
USE noncollin_module, ONLY : angle1, angle2
USE uspp_param, ONLY : upf
USE mp_global, ONLY : intra_bgrp_comm
USE mp_bands, ONLY : intra_bgrp_comm
USE mp, ONLY : mp_sum
USE fft_base, ONLY : dfftp
USE fft_interfaces, ONLY : invfft
......
......@@ -15,9 +15,9 @@ SUBROUTINE data_structure( gamma_only )
!
USE kinds, ONLY : DP
USE mp, ONLY : mp_max
USE mp_global, ONLY : me_bgrp, nproc_bgrp, root_bgrp, intra_bgrp_comm, &
inter_pool_comm
USE mp_global, ONLY : get_ntask_groups
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
USE cell_base, ONLY : bg, tpiba
USE klist, ONLY : xk, nks
......@@ -29,7 +29,7 @@ SUBROUTINE data_structure( gamma_only )
IMPLICIT NONE
LOGICAL, INTENT(in) :: gamma_only
REAL (DP) :: gkcut
INTEGER :: ik, ngm_, ngs_, ngw_, nogrp
INTEGER :: ik, ngm_, ngs_, ngw_
!
! ... calculate gkcut = max |k+G|^2, in (2pi/a)^2 units
!
......@@ -56,11 +56,9 @@ SUBROUTINE data_structure( gamma_only )
!
! ... set up fft descriptors, including parallel stuff: sticks, planes, etc.
!
nogrp = get_ntask_groups()
!
CALL pstickset( gamma_only, bg, gcutm, gkcut, gcutms, &
dfftp, dffts, ngw_ , ngm_ , ngs_ , me_bgrp, &
root_bgrp, nproc_bgrp, intra_bgrp_comm, nogrp )
root_bgrp, nproc_bgrp, intra_bgrp_comm, ntask_groups )
!
! on output, ngm_ and ngs_ contain the local number of G-vectors
! for the two grids. Initialize local and global number of G-vectors
......
!
! Copyright (C) 2001-2012 Quantum ESPRESSO group
! This file is distributed under the terms of the
......@@ -17,9 +16,8 @@ SUBROUTINE data_structure_custom(fc, gamma_only)
USE cell_base, ONLY : bg, tpiba, tpiba2
USE klist, ONLY : xk, nks
USE mp, ONLY : mp_sum, mp_max,mp_barrier
USE mp_global, ONLY : me_bgrp, nproc_bgrp, inter_bgrp_comm, &
intra_bgrp_comm, root_bgrp
USE mp_global, ONLY : get_ntask_groups
USE mp_bands, ONLY : me_bgrp, nproc_bgrp, inter_bgrp_comm, &
intra_bgrp_comm, root_bgrp, ntask_groups
USE stick_set, ONLY : pstickset_custom
USE fft_custom, ONLY : fft_cus, gvec_init
USE fft_base, ONLY : dfftp
......@@ -50,26 +48,24 @@ SUBROUTINE data_structure_custom(fc, gamma_only)
inter_comm = inter_bgrp_comm
intra_comm = intra_bgrp_comm
root = root_bgrp
nogrp = ntask_groups
nogrp = get_ntask_groups()
IF (nks == 0) THEN
!
! if k-points are automatically generated (which happens later)
! use max(bg)/2 as an estimate of the largest k-point
!
gkcut = 0.5d0 * MAX ( &
IF (nks == 0) THEN
!
! if k-points are automatically generated (which happens later)
! use max(bg)/2 as an estimate of the largest k-point
!
gkcut = 0.5d0 * MAX ( &
&SQRT (SUM(bg (1:3, 1)**2) ), &
&SQRT (SUM(bg (1:3, 2)**2) ), &
&SQRT (SUM(bg (1:3, 3)**2) ) )
ELSE
gkcut = 0.0d0
DO kpoint = 1, nks
gkcut = MAX (gkcut, SQRT ( SUM(xk (1:3, kpoint)**2) ) )
ENDDO
ENDIF
gkcut = (SQRT (fc%ecutt) / tpiba + gkcut)**2
ELSE
gkcut = 0.0d0
DO kpoint = 1, nks
gkcut = MAX (gkcut, SQRT ( SUM(xk (1:3, kpoint)**2) ) )
ENDDO
ENDIF
gkcut = (SQRT (fc%ecutt) / tpiba + gkcut)**2
!
! ... find maximum value among all the processors
!
......@@ -77,11 +73,9 @@ SUBROUTINE data_structure_custom(fc, gamma_only)
!
! ... set up fft descriptors, including parallel stuff: sticks, planes, etc.
!
nogrp = get_ntask_groups()
!
CALL pstickset_custom( gamma_only, bg, gcutm, gkcut, fc%gcutmt, &
dfftp, fc%dfftt, ngw_ , ngm_, ngs_, me, root, nproc, intra_comm, &
nogrp )