Dear Gabriele and Stefano,<br>Thanks for your answers,<br><br><div class="gmail_quote">On Tue, Sep 29, 2009 at 11:25 AM, Gabriele Sclauzero <span dir="ltr"><<a href="mailto:sclauzer@sissa.it">sclauzer@sissa.it</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Dear Javier,<br>
<div class="im"><br>
</div>  I don't know that (pretty new) part of the code, but at a first glance to that<br>
subroutine I would say that you must be wrong.<br>
The parallelization is done inside each pool over atoms, hence you only need to collect<br>
the partial sums over subsets of atoms from the processes in the pool.<br>
Using more than one pool will not improve the speedup of that part of the code, but<br>
neither change the result of energy_london.<br>
<br></blockquote><div>The parallelization is done to all processes (nproc), and if I understand correctly the sum should be performed over all processes. Looking better at the different parallelizations, I think the correct way is to replace, in mm_dispersion.f90, intra_pool_comm by world_comm, i.e., the diff between original and modified file is:<br>
-----------------------------<br>261c261<br><     USE mp_global,    ONLY : mpime , nproc , intra_pool_comm<br>---<br>>     USE mp_global,    ONLY : mpime , nproc , world_comm<br>362c362<br>< 999 CALL mp_sum ( energy_london , intra_pool_comm )<br>
---<br>> 999 CALL mp_sum ( energy_london , world_comm )<br>377c377<br><     USE mp_global,    ONLY : mpime , nproc , intra_pool_comm<br>---<br>>     USE mp_global,    ONLY : mpime , nproc , world_comm<br>503c503<br>
< 999 CALL mp_sum ( force_london , intra_pool_comm )<br>---<br>> 999 CALL mp_sum ( force_london , world_comm )<br>519c519<br><     USE mp_global,    ONLY : mpime , nproc , intra_pool_comm<br>---<br>>     USE mp_global,    ONLY : mpime , nproc , world_comm<br>
660c660<br>< 999 CALL mp_sum ( stres_london , intra_pool_comm )<br>---<br>> 999 CALL mp_sum ( stres_london , world_comm )<br>-----------------------------<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

If you have (reproducible) evidence that the same calculation performed with more than one<br>
pool gives a different result, please provide some simple input file.<br>
<br>
Thanks,<br>
<br>
GS<br>
<div><div></div><br></div></blockquote></div>I attach an input file which the original version of the subroutine gives me<br>     Dispersion Correction     =      -0.05035543 Ry<br>for "-npool 1", and<br>     Dispersion Correction     =      -0.02587314 Ry<br>
for "-npool 2". With the modified version of mm_dispersion.f90, I get the same value for 1 o 2 pools.<br><br clear="all"><br>-- <br>Dr. Javier Daniel Fuhr<br>Grupo Física de Superficies<br>División Colisiones Atómicas<br>
Centro Atómico Bariloche<br>TE : ++54 2944 44 5100  Int. 5524<br>FAX: ++54 2944 44 5299 <br>