[Q-e-developers] calbec() hungs if # of MPI process > 1
Ilya Ryabinkin
igryabinkin at gmail.com
Tue Nov 3 19:47:21 CET 2015
Dear colleagues:
I'm developing a code to calculate the non-adiabatic couplings using
finite-difference scheme. The problem I currently stumbled upon is the
following:
I need to calculate the overlap matrix between MOs at t-dt and t,
gamma_only. What I'm doing:
Code is borrowed from update_pot.f90, subroutine extrapolate_wfcs(),
lines 595-600
ALLOCATE( evcold( npwx, nbnd ), aux( npwx, nbnd ) )
!! Retreive old WF at t-dt from *.oldwfc file
CALL davcio( evcold, 2*nwordwfc, iunoldwfc, 1, -1 )
!! Get current WF at t
aux = evc
!
ALLOCATE( S( nbnd, nbnd ), O( nbnd, nbnd ) )
CALL calbec( npw, aux, evcold, S ) ! Get overlap S(t-dt, t)
!
O = ANINT( S ) ! O is a rounded S matrix to perform phase and
! ordering matching
IF ( ANY( diag( O ) == 0.0_dp ) ) THEN
...
Essentially, my code hungs at calbec() call if I ran it in parallell
with # of MPI process >1. gdb shows that processes are in a polling
loop, which means that they are wait for something. I'm baffled at
this point, as there is nothing they should wait for.
What I am missing?
Thanks for the help,
Ilya
More information about the developers
mailing list