A general cleanup of the phonon parallelism. Now the mp_bcast is done

within a single image.


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@6178 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
dalcorso 2009-11-19 10:15:37 +00:00
parent c6b5f500a2
commit 805a8682ff
7 changed files with 91 additions and 84 deletions

View File

@ -16,6 +16,7 @@ subroutine bcast_ph_input ( )
#ifdef __PARA
use mp, only: mp_bcast
USE mp_global, only : intra_image_comm
USE control_ph, ONLY : start_irr, last_irr, start_q, last_q, nmix_ph, &
niter_ph, lnoloc, alpha_mix, tr2_ph, lrpa, recover, &
ldisp, elph, reduce_io, zue, zeu, epsil, trans, &
@ -37,59 +38,59 @@ subroutine bcast_ph_input ( )
!
! logicals
!
call mp_bcast (lgamma, ionode_id)
call mp_bcast (epsil, ionode_id)
call mp_bcast (trans, ionode_id)
call mp_bcast (zue, ionode_id)
call mp_bcast (zeu, ionode_id)
call mp_bcast (reduce_io, ionode_id)
call mp_bcast (elph, ionode_id)
call mp_bcast (ldisp, ionode_id)
call mp_bcast (lraman, ionode_id)
call mp_bcast (elop, ionode_id)
call mp_bcast (fpol, ionode_id)
call mp_bcast (recover, ionode_id)
call mp_bcast (asr, ionode_id)
call mp_bcast (lrpa, ionode_id)
call mp_bcast (lnoloc, ionode_id)
call mp_bcast (lgamma, ionode_id, intra_image_comm)
call mp_bcast (epsil, ionode_id, intra_image_comm)
call mp_bcast (trans, ionode_id, intra_image_comm)
call mp_bcast (zue, ionode_id, intra_image_comm)
call mp_bcast (zeu, ionode_id, intra_image_comm)
call mp_bcast (reduce_io, ionode_id, intra_image_comm)
call mp_bcast (elph, ionode_id, intra_image_comm)
call mp_bcast (ldisp, ionode_id, intra_image_comm)
call mp_bcast (lraman, ionode_id, intra_image_comm)
call mp_bcast (elop, ionode_id, intra_image_comm)
call mp_bcast (fpol, ionode_id, intra_image_comm)
call mp_bcast (recover, ionode_id, intra_image_comm)
call mp_bcast (asr, ionode_id, intra_image_comm)
call mp_bcast (lrpa, ionode_id, intra_image_comm)
call mp_bcast (lnoloc, ionode_id, intra_image_comm)
!
! integers
!
call mp_bcast (start_irr, ionode_id)
call mp_bcast (last_irr, ionode_id)
call mp_bcast (start_q, ionode_id)
call mp_bcast (last_q, ionode_id)
call mp_bcast (niter_ph, ionode_id)
call mp_bcast (nmix_ph, ionode_id)
call mp_bcast (iverbosity, ionode_id)
call mp_bcast (modenum, ionode_id)
call mp_bcast (nat_todo, ionode_id)
call mp_bcast (nrapp, ionode_id)
CALL mp_bcast( nq1, ionode_id )
CALL mp_bcast( nq2, ionode_id )
CALL mp_bcast( nq3, ionode_id )
CALL mp_bcast( iq1, ionode_id )
CALL mp_bcast( iq2, ionode_id )
CALL mp_bcast( iq3, ionode_id )
call mp_bcast (start_irr, ionode_id, intra_image_comm)
call mp_bcast (last_irr, ionode_id, intra_image_comm)
call mp_bcast (start_q, ionode_id, intra_image_comm)
call mp_bcast (last_q, ionode_id, intra_image_comm)
call mp_bcast (niter_ph, ionode_id, intra_image_comm)
call mp_bcast (nmix_ph, ionode_id, intra_image_comm)
call mp_bcast (iverbosity, ionode_id, intra_image_comm)
call mp_bcast (modenum, ionode_id, intra_image_comm)
call mp_bcast (nat_todo, ionode_id, intra_image_comm)
call mp_bcast (nrapp, ionode_id, intra_image_comm)
CALL mp_bcast( nq1, ionode_id, intra_image_comm )
CALL mp_bcast( nq2, ionode_id, intra_image_comm )
CALL mp_bcast( nq3, ionode_id, intra_image_comm )
CALL mp_bcast( iq1, ionode_id, intra_image_comm )
CALL mp_bcast( iq2, ionode_id, intra_image_comm )
CALL mp_bcast( iq3, ionode_id, intra_image_comm )
!
! real*8
!
call mp_bcast (tr2_ph, ionode_id)
call mp_bcast (eth_rps, ionode_id)
call mp_bcast (eth_ns, ionode_id)
call mp_bcast (amass, ionode_id)
call mp_bcast (alpha_mix, ionode_id)
call mp_bcast (max_seconds, ionode_id)
call mp_bcast (dek, ionode_id)
call mp_bcast (tr2_ph, ionode_id, intra_image_comm)
call mp_bcast (eth_rps, ionode_id, intra_image_comm)
call mp_bcast (eth_ns, ionode_id, intra_image_comm)
call mp_bcast (amass, ionode_id, intra_image_comm)
call mp_bcast (alpha_mix, ionode_id, intra_image_comm)
call mp_bcast (max_seconds, ionode_id, intra_image_comm)
call mp_bcast (dek, ionode_id, intra_image_comm)
!
! characters
!
call mp_bcast (title, ionode_id)
call mp_bcast (fildyn, ionode_id)
call mp_bcast (fildvscf, ionode_id)
call mp_bcast (fildrho, ionode_id)
call mp_bcast (tmp_dir, ionode_id)
call mp_bcast (prefix, ionode_id)
call mp_bcast (title, ionode_id, intra_image_comm)
call mp_bcast (fildyn, ionode_id, intra_image_comm)
call mp_bcast (fildvscf, ionode_id, intra_image_comm)
call mp_bcast (fildrho, ionode_id, intra_image_comm)
call mp_bcast (tmp_dir, ionode_id, intra_image_comm)
call mp_bcast (prefix, ionode_id, intra_image_comm)
#endif
return
end subroutine bcast_ph_input

View File

@ -18,7 +18,7 @@ SUBROUTINE davcio_drho( drho, lrec, iunit, nrec, isw )
USE kinds, ONLY : DP
USE fft_base, ONLY : dfftp, cgather_sym, cscatter_sym
USE io_global, ONLY : ionode, ionode_id
USE mp_global, ONLY : inter_pool_comm, me_pool
USE mp_global, ONLY : inter_pool_comm, me_pool, intra_image_comm
USE mp, ONLY : mp_bcast, mp_barrier
USE gvect, ONLY : nrx1, nrx2, nrx3, nrxx
USE noncollin_module, ONLY : nspin_mag
@ -38,7 +38,7 @@ SUBROUTINE davcio_drho( drho, lrec, iunit, nrec, isw )
!
!
IF ( ionode ) INQUIRE (UNIT = iunit, OPENED = exst)
CALL mp_bcast(exst,ionode_id)
CALL mp_bcast(exst,ionode_id, intra_image_comm)
IF (.NOT.exst) RETURN
ALLOCATE( ddrho( nrx1 * nrx2 * nrx3 , nspin_mag) )

View File

@ -27,7 +27,8 @@ subroutine el_opt
USE io_global, ONLY: ionode_id
#ifdef __PARA
USE mp, ONLY: mp_bcast, mp_sum
USE mp_global, ONLY: my_pool_id, inter_pool_comm, intra_pool_comm
USE mp_global, ONLY: my_pool_id, inter_pool_comm, intra_pool_comm, &
intra_image_comm
#endif
implicit none
@ -125,7 +126,7 @@ subroutine el_opt
#ifdef __PARA
call mp_sum ( ps3, intra_pool_comm )
100 continue
call mp_bcast(ps3, ionode_id)
call mp_bcast(ps3, ionode_id, intra_image_comm)
#endif
deallocate (d2muxc )
deallocate (aux3 )

View File

@ -311,7 +311,7 @@ SUBROUTINE elphsum ( )
USE phcom
USE el_phon
USE io_global, ONLY : stdout, ionode, ionode_id
USE mp_global, ONLY : npool
USE mp_global, ONLY : npool, intra_image_comm
USE mp, ONLY : mp_bcast
USE control_flags, ONLY : modenum
USE control_ph, ONLY : lgamma
@ -378,8 +378,8 @@ SUBROUTINE elphsum ( )
READ(iuna2Fsave,*) ibnd, nksfit
END IF
!
CALL mp_bcast (ibnd, ionode_id)
CALL mp_bcast (nksfit, ionode_id)
CALL mp_bcast (ibnd, ionode_id, intra_image_comm)
CALL mp_bcast (nksfit, ionode_id, intra_image_comm)
if ( ibnd /= nbnd ) call errore('elphsum','wrong file read',iuna2Fsave)
allocate (etfit(nbnd,nksfit), xkfit(3,nksfit), wkfit(nksfit))
!
@ -393,12 +393,12 @@ SUBROUTINE elphsum ( )
!
! broadcast all variables read
!
CALL mp_bcast (etfit, ionode_id)
CALL mp_bcast (xkfit, ionode_id)
CALL mp_bcast (wkfit, ionode_id)
CALL mp_bcast (nk1fit, ionode_id)
CALL mp_bcast (nk2fit, ionode_id)
CALL mp_bcast (nk3fit, ionode_id)
CALL mp_bcast (etfit, ionode_id, intra_image_comm)
CALL mp_bcast (xkfit, ionode_id, intra_image_comm)
CALL mp_bcast (wkfit, ionode_id, intra_image_comm)
CALL mp_bcast (nk1fit, ionode_id, intra_image_comm)
CALL mp_bcast (nk2fit, ionode_id, intra_image_comm)
CALL mp_bcast (nk3fit, ionode_id, intra_image_comm)
!
nkfit=nk1fit*nk2fit*nk3fit
!

View File

@ -46,8 +46,9 @@ SUBROUTINE phq_readin()
USE noncollin_module, ONLY : i_cons, noncolin
USE ldaU, ONLY : lda_plus_u
USE control_flags, ONLY : iverbosity, modenum
USE io_global, ONLY : ionode
USE mp_global, ONLY : nproc, nproc_pool, nproc_file, nproc_pool_file
USE io_global, ONLY : ionode, stdout
USE mp_global, ONLY : nproc, nproc_pool, nproc_file, nproc_pool_file, &
intra_image_comm
USE control_flags, ONLY : twfcollect
USE paw_variables, ONLY : okpaw
USE ramanm, ONLY : eth_rps, eth_ns, lraman, elop, dek
@ -128,7 +129,7 @@ SUBROUTINE phq_readin()
!
ENDIF
!
CALL mp_bcast(ios, ionode_id)
CALL mp_bcast(ios, ionode_id, intra_image_comm)
CALL errore( 'phq_readin', 'reading title ', ABS( ios ) )
!
! Rewind the input if the title is actually the beginning of inputph namelist
@ -191,13 +192,13 @@ SUBROUTINE phq_readin()
!
IF (ionode) READ( 5, INPUTPH, IOSTAT = ios )
CALL mp_bcast(ios, ionode_id)
CALL mp_bcast(ios, ionode_id, intra_image_comm)
!
CALL errore( 'phq_readin', 'reading inputph namelist', ABS( ios ) )
!
IF (ionode) tmp_dir = trimcheck (outdir)
CALL bcast_ph_input ( )
CALL mp_bcast(nogg, ionode_id)
CALL mp_bcast(nogg, ionode_id, intra_image_comm)
!
! ... Check all namelist variables
!
@ -237,9 +238,9 @@ SUBROUTINE phq_readin()
IF (.NOT. ldisp) &
READ (5, *, iostat = ios) (xq (ipol), ipol = 1, 3)
END IF
CALL mp_bcast(ios, ionode_id)
CALL mp_bcast(ios, ionode_id, intra_image_comm)
CALL errore ('phq_readin', 'reading xq', ABS (ios) )
CALL mp_bcast(xq, ionode_id)
CALL mp_bcast(xq, ionode_id, intra_image_comm)
IF (.NOT.ldisp) THEN
lgamma = xq (1) .EQ.0.D0.AND.xq (2) .EQ.0.D0.AND.xq (3) .EQ.0.D0
IF ( (epsil.OR.zue) .AND..NOT.lgamma) CALL errore ('phq_readin', &
@ -268,9 +269,9 @@ SUBROUTINE phq_readin()
READ (5, *, iostat = ios) nfs
ENDIF
ENDIF
CALL mp_bcast(ios, ionode_id)
CALL mp_bcast(ios, ionode_id, intra_image_comm)
CALL errore ('phq_readin', 'reading number of FREQUENCIES', ABS(ios) )
CALL mp_bcast(nfs, ionode_id)
CALL mp_bcast(nfs, ionode_id, intra_image_comm)
if (nfs > nfsmax) call errore('phq_readin','Too many frequencies',1)
if (nfs < 1) call errore('phq_readin','Too few frequencies',1)
IF (ionode) THEN
@ -282,9 +283,9 @@ SUBROUTINE phq_readin()
END DO
END IF
END IF
CALL mp_bcast(ios, ionode_id)
CALL mp_bcast(ios, ionode_id, intra_image_comm)
CALL errore ('phq_readin', 'reading FREQUENCIES card', ABS(ios) )
CALL mp_bcast(fiu, ionode_id)
CALL mp_bcast(fiu, ionode_id, intra_image_comm)
ELSE
nfs=0
fiu=0.0_DP
@ -424,18 +425,18 @@ SUBROUTINE phq_readin()
IF (ionode) &
READ (5, *, iostat = ios) (atomo (na), na = 1, &
nat_todo)
CALL mp_bcast(ios, ionode_id)
CALL mp_bcast(ios, ionode_id, intra_image_comm)
CALL errore ('phq_readin', 'reading atoms', ABS (ios) )
CALL mp_bcast(atomo, ionode_id)
CALL mp_bcast(atomo, ionode_id, intra_image_comm)
ENDIF
IF (nrapp.LT.0.OR.nrapp.GT.3 * nat) CALL errore ('phq_readin', &
'nrapp is wrong', 1)
IF (nrapp.NE.0) THEN
IF (ionode) &
READ (5, *, iostat = ios) (list (na), na = 1, nrapp)
CALL mp_bcast(ios, ionode_id)
CALL mp_bcast(ios, ionode_id, intra_image_comm)
CALL errore ('phq_readin', 'reading list', ABS (ios) )
CALL mp_bcast(list, ionode_id)
CALL mp_bcast(list, ionode_id, intra_image_comm)
ENDIF
IF (epsil.AND.lgauss) &

View File

@ -36,6 +36,8 @@ subroutine set_irr (nat, at, bg, xq, s, invs, nsym, rtau, irt, &
USE random_numbers, ONLY : randy
#ifdef __PARA
use mp, only: mp_bcast
use io_global, only : ionode_id
use mp_global, only : intra_image_comm
#endif
implicit none
!
@ -215,15 +217,15 @@ subroutine set_irr (nat, at, bg, xq, s, invs, nsym, rtau, irt, &
! parallel stuff: first node broadcasts everything to all nodes
!
400 continue
call mp_bcast (gi, 0)
call mp_bcast (gimq, 0)
call mp_bcast (u, 0)
call mp_bcast (nsymq, 0)
call mp_bcast (npert, 0)
call mp_bcast (nirr, 0)
call mp_bcast (irotmq, 0)
call mp_bcast (irgq, 0)
call mp_bcast (minus_q, 0)
call mp_bcast (gi, ionode_id, intra_image_comm)
call mp_bcast (gimq, ionode_id, intra_image_comm)
call mp_bcast (u, ionode_id, intra_image_comm)
call mp_bcast (nsymq, ionode_id, intra_image_comm)
call mp_bcast (npert, ionode_id, intra_image_comm)
call mp_bcast (nirr, ionode_id, intra_image_comm)
call mp_bcast (irotmq, ionode_id, intra_image_comm)
call mp_bcast (irgq, ionode_id, intra_image_comm)
call mp_bcast (minus_q, ionode_id, intra_image_comm)
#endif
return
end subroutine set_irr

View File

@ -20,6 +20,8 @@ subroutine set_irr_sym (nat, at, bg, xq, s, rtau, irt, &
USE constants, ONLY: tpi
USE mp, ONLY: mp_bcast
USE mp_global, ONLY : intra_image_comm
USE io_global, ONLY : ionode_id
implicit none
!
! first the dummy variables
@ -156,8 +158,8 @@ subroutine set_irr_sym (nat, at, bg, xq, s, rtau, irt, &
! parallel stuff: first node broadcasts everything to all nodes
!
400 continue
call mp_bcast (t, 0)
call mp_bcast (tmq, 0)
call mp_bcast (t, ionode_id, intra_image_comm)
call mp_bcast (tmq, ionode_id, intra_image_comm)
#endif
return
end subroutine set_irr_sym