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 here? I appreciate any feed back regarding this issue. Thanks, Charles Salvia