According to the OpenMPI FAQ, OpenMPI creates point-to-point socket
connections "lazily", i.e. only when needed.
I have a few questions about this, and how it affect program performance.
1) Does this mean that MPI_Send will call connect() if necessary, and
MPI_Recv will call accept()?
2) If so, what is the policy for dealing with the race condition where one
process calls connect() before the destination process is listening with
accept()? Is there a retry interval? And if so, how long is the interval
and how many times will it retry? I ask because I want to know how much of
a performance impact this has.
3) I'm confused as to something the FAQ says regarding this issue. The
OpenMPI FAQ says "Open MPI opens sockets as they are required -- so the
first time a process sends a message to a peer and there is a TCP connection
between the two, Open MPI will automatically open a new socket." Shouldn't
this read "so the first time a process sends a message to a peer and there
is *NO* TCP connection between the two"? Or am I misunderstanding something
I appreciate any feed back regarding this issue.