Hi, Eugene,
You said:
" The bottom line here is that from a causal point of view it would seem that B should not impact the timings.  Presumably, some other variable is actually responsible here."
Could you explain it in more details for the second sentence. Thanks a lot.

Linbao

On Thu, Oct 21, 2010 at 9:58 AM, Eugene Loh <eugene.loh@oracle.com> wrote:
Jeff Squyres wrote:

Ah.  The original code snipit you sent was:

MPI::COMM_WORLD.Barrier();
if(rank == master) t1 = clock();
"code A";
MPI::COMM_WORLD.Barrier();
if(rank == master) t2 = clock();
"code B";

Remember that the time that individual processes exit barrier is not guaranteed to be uniform (indeed, it most likely *won't* be the same).  MPI only guarantees that a process will not exit until after all processes have entered.  So taking t2 after the barrier might be a bit misleading, and may cause unexpected skew.
 
The barrier exit times are not guaranteed to be uniform, but in practice this style of timing is often the best (or only practical) tool one has for measuring the collective performance of a group of processes.


Code B *probably* has no effect on time spent between t1 and t2.  But extraneous effects might cause it to do so -- e.g., are you running in an oversubscribed scenario?  And so on.
 
Right.  The bottom line here is that from a causal point of view it would seem that B should not impact the timings.  Presumably, some other variable is actually responsible here.

_______________________________________________
users mailing list
users@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users