[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