On Sat, 29 May 2004, Mike Arnold wrote:
> Thanks Brian, I never realised that LAM progresses _all_ pending
> communications whenever _any_ communication function is called.
> Understanding that clarifies everything.
A further comment on Brian's last comments about Myrinet and Infiniband...
When we do a send with Myri/IB, we actually give the buffer to the NIC and
let the on-board processor handle it from there. So at least some form of
progress occurs "in the background", and even while you're not in MPI
functions (typically more so than the kernel progressing pending TCP
communication, mainly because the NIC has its own processor to do the
progress). It is true that [in the single-threaded LAM implementation]
you have to be back down in LAM to handle the ACKs and whatnot, but at
least once the data transfer starts, you can be out in the main program --
outside of MPI -- and progress is occuring. That's a Good Thing(tm).
Pre-posting ACKs is actually something that we're discussing for our
next-generation progression engine. We haven't come to any conclusions on
this yet becuase it only causes an optimization in some cases; in others,
it causes more overhead network traffic and some nasty race conditions.
It is possible that we will at least experiment with such models, but I
don't want to promise anything about it yet. :-)
--
{+} Jeff Squyres
{+} jsquyres_at_[hidden]
{+} http://www.lam-mpi.org/
|