[Q-e-developers] calbec() hungs if # of MPI process > 1

Ilya Ryabinkin i.ryabinkin at utoronto.ca
Tue Nov 3 23:15:21 CET 2015


Not sure if I understood how to proceed from there...
I read Sec 8.3 but didn't find answers to my issue.

Could you direct me more?

--
I.

On Tue, Nov 3, 2015 at 4:48 PM, Paolo Giannozzi <p.giannozzi at gmail.com> wrote:
>
>
> On Tue, Nov 3, 2015 at 10:16 PM, Ilya Ryabinkin <igryabinkin at gmail.com>
> wrote:
>>
>>
>> I call get_nacs() subroutine from subroutine verlet(), in particular,
>> past the line 229 of dynamics_module.f90, if the  matters.
>
>
> it matters. Subroutine verlet is called only by processor 0 ("ionode"), so
> if you try to do anything in parallel inside it, it will hang for sure. What
> is not parallel is often done on a single processor, results are then
> broadcast to the other processors. Why, it is explained in Sec.8.3. of the
> developer manual
>
> Paolo
>>
>>
>> > There isn't anything obviously wrong in your piece of code. Is it inside
>> > a
>> > modified version of pw.x, or is it stand-alone? in the latter case,
>> > there
>> > might be some missing initialization.
>>
>> It sounds relevant. Indeed, in extrapolate_wfcs() the very first (as
>> well as the very last) line is
>>
>>   CALL mp_barrier( intra_image_comm ) ! debug
>>
>> I tried to add these lines to my get_nacs() as well, but it doesn't do
>> any good: code hungs immediately, without even going past mp_barrier()
>>
>> --
>> Ilya
>>
>>
>> In the former case...it shouldn't
>> > happen. Anyway: try first of all to figure out where your code hangs.
>> > "calbec" is an interface to several different routines. Maybe it goes
>> > into
>> > the wrong one. It should just do a call to DGEMM or ZGEMM and a call to
>> > mp_sum (wrapper to mpi_reduce)
>> >
>> > Paolo
>> >
>> > On Tue, Nov 3, 2015 at 7:47 PM, Ilya Ryabinkin <igryabinkin at gmail.com>
>> > wrote:
>> >>
>> >> 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
>> >> _______________________________________________
>> >> Q-e-developers mailing list
>> >> Q-e-developers at qe-forge.org
>> >> http://qe-forge.org/mailman/listinfo/q-e-developers
>> >
>> >
>> >
>> >
>> > --
>> > Paolo Giannozzi, Dept. Chemistry&Physics&Environment,
>> > Univ. Udine, via delle Scienze 208, 33100 Udine, Italy
>> > Phone +39-0432-558216, fax +39-0432-558222
>> >
>> > _______________________________________________
>> > Q-e-developers mailing list
>> > Q-e-developers at qe-forge.org
>> > http://qe-forge.org/mailman/listinfo/q-e-developers
>> >
>>
>> _______________________________________________
>> Q-e-developers mailing list
>> Q-e-developers at qe-forge.org
>> http://qe-forge.org/mailman/listinfo/q-e-developers
>>
>
>
>
> --
> Paolo Giannozzi, Dept. Chemistry&Physics&Environment,
> Univ. Udine, via delle Scienze 208, 33100 Udine, Italy
> Phone +39-0432-558216, fax +39-0432-558222
>
> _______________________________________________
> Q-e-developers mailing list
> Q-e-developers at qe-forge.org
> http://qe-forge.org/mailman/listinfo/q-e-developers
>



More information about the developers mailing list