Thank you: this is very enlightening. I will try this and let you know... Ghislain.
Le 9 sept. 2011 à 18:00, Eugene Loh a écrit : > > > On 9/8/2011 11:47 AM, Ghislain Lartigue wrote: >> I guess you're perfectly right! >> I will try to test it tomorrow by putting a call system("wait(X)) befor the >> barrier! > What does "wait(X)" mean? > > Anyhow, here is how I see your computation: > > A) The first barrier simply synchronizes the processes. > B) Then you start a bunch of non-blocking, point-to-point messages. > C) Then another barrier. > D) Finally, the point-to-point messages are completed. > > Your mental model might be that A, B, and C should be fast and that D should > take a long time. The reality may be that the completion of all those > messages is actually taking place during C. > > How about the following? > > Barrier > t0 = MPI_Wtime() > start all non-blocking messages > t1 = MPI_Wtime() > Barrier > t2 = MPI_Wtime() > complete all messages > t3 = MPI_Wtime() > Barrier > t4 = MPI_Wtime() > > Then, look at the data from all the processes graphically. Compare the > picture to the same experiment, but with middle Barrier missing. Presumably, > the full iteration will take roughly as long in both cases. The difference, > I might expect, would be that with the middle barrier present, it gets all > the time and the message-completion is fast. Without the middle barrier, the > message completion is slow. So, message completion is taking a long time > either way and the only difference is whether it's taking place during your > MPI_Test loop or during what you thought was only a barrier. > > A simple way of doing all this is to run with a time-line profiler... some > MPI performance analysis tool. You won't have to instrument the code, dump > timings, or figure out graphics. Just look at pretty pictures! There is > some description of tool candidates in the OMPI FAQ at > http://www.open-mpi.org/faq/?category=perftools >> PS: >> if anyone has more information about the implementation of the MPI_IRECV() >> procedure, I would be glad to learn more about it! > I don't know how much detail you want here, but I suspect not much detail is > warranted. There is a lot of complexity here, but I think a few key ideas > will help. > > First, I'm pretty sure you're sending "long" messages. OMPI usually sends > such messages by queueing up a request. These requests can, in the general > case, be "progressed" whenever an MPI call is made. So, whenever you make an > MPI call, get away from the thought that you're doing one specific thing, as > specified by the call and its arguments. Think instead that you will also be > looking around to see whatever other MPI work can be progressed. > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users >