On Feb 6, 2006, at 10:58 AM, Chen, Xiaohe ((UMR-Student)) wrote:
> How long does Isend/Irecv take to send about several K byte data?
>
> I set up transfer from west to east in a loop, it looks like the
> nodes at east take a lot longer time than the west side, should I
> use send_init instead?
Setting up an Isend/Irecv should be very quick. If you are sending
larger messages (several KB is in that range), I would be surprised
if using persistent sends offers much of a speed increase over using
normal non-blocking sends. You do have to make calls into the MPI
library when using LAM/MPI in order to progress the send, especially
with shared memory or TCP. So if you call Isend/Irecv and then don't
call Test or Wait (or one of the variants) for long periods of time,
LAM/MPI can't progress that send until you eventually do call into
the MPI library.
As for why it would take longer to send one message than the other, I
think this probably has more to do with network saturation or timing
errors than anything else. It's hard to characterize timings,
especially with so little information about the application. I will
say, however, unless I'm sending lots of small messages very
frequently, I usually don't bother with the complexity of persistent
sends.
Hope this helps,
Brian
--
Brian Barrett
LAM/MPI developer and all around nice guy
Have a LAM/MPI day: http://www.lam-mpi.org/
|