Sorry for the delay. Answers inline.
On Feb 29, 2012, at 1:09 PM, Eric Chamberland wrote:
> I would like to know which of "waitone" vs "waitany" is optimal and of course, will never produce deadlocks.
In your sample application, either will work just fine -- they will not deadlock.
> After executing several times, on different number of processes and different number of nodes and almost always large value of "lNbInt", I *think* these could be good conclusions? :
> #1- Both version take almost the same wall clock time to complete
> #2- Both version do *not* produce deadlock
For this application, I agree.
> #3- MPI_WAIT_ANY_VERSION could do better if some work was really done with received data.
Probably so. It would probably do even better if the senders were sending at staggered times.
> #4- MPI_WAIT_ANY_VERSION received always the data from processes on the same host.
I'm not sure what you mean by that statement.
> I haven't be able to reproduce a deadlock even while varying array length, number of processes and number of hosts. How can I conclude there are no problem with this code? Any reading suggestion?
I think the classical conditions for deadlock apply here. Summarizing, if you're going to block, you need to ensure that *something* will eventually complete that blocking (i.e., either the specific/WAIT will complete, or *some* sender/WAITANY will complete).
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/