Blocking send/recv, as the name suggest, stop processing your master and
slave code until the data is received on the slave side.
Nonblocking send/recv wouldn't stop, instead you must check the status on
the slave side to see if data has been sent. Nonblocking is faster on the
master side because the master doesn't need to wait for the slave to receive
the data to continue.
So when you say you want your master to send "as fast as possible", I
suppose you meant get back to running your code as soon as possible. In
that case you would want nonblocking. However when you say you want the
slaves to receive data faster, it seems you're implying the actual data
transmission across the network. I believe the data transmission speed is
not dependent on whether the it is blocking or nonblocking.
On Sun, Jan 30, 2011 at 11:09 AM, Toon Knapen <toon.knapen_at_[hidden]> wrote:
> Hi all,
> If I have a master-process that needs to send a chunk of (different) data
> to each of my N slave processes as fast as possible, would I receive the
> chunk in each of the slaves faster if the master would launch N threads each
> doing a blocking send or would it be better to launch N nonblocking sends in
> the master.
> I'm currently using OpenMPI on ethernet but might the approach be different
> with different types of networks ?
> thanks in advance,
> users mailing list
University of California, San Diego