[mpich-discuss] How expensive is MPI_Win_create() compared to memcpy()?

Jed Brown jedbrown at mcs.anl.gov
Tue Dec 27 12:42:49 CST 2011


On Mon, Dec 26, 2011 at 23:37, Pavan Balaji <balaji at mcs.anl.gov> wrote:

> Window creation will always need to be synchronizing, at least to gather
> size and base address parameters.
>

Hmm, what about limiting scope, e.g. if I knew a priori which process
groups I would use as arguments to MPI_Win_post() and MPI_Win_start()? Is
there anything useful you could do if I only knew the process group for
MPI_Win_start()?


> "Re-seating" a window with a different memory is essentially creating a
> new window.  What are you trying to accomplish?
>

It's cumbersome for a user to always arrange to reuse some special memory,
probably with different types at different times. I have a choice of (a)
memcpy into existing window memory and (b) wrap a window around the user's
memory. For short messages, the memcpy version will be faster.

Sometimes I'm accessing parts of a buffer that is much larger than the
send/receive volume (specified by composite MPI_Datatypes). The memcpy
costs proportional to the size of the whole buffer rather than to the
communication volume. I can pack, but this involves one more transaction
during setup.

Note that a single communication object of mine might have multiple
in-flight operations at a given time, each using different windows, so I
would be keeping a cache of windows.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20111227/d17a924b/attachment.htm>


More information about the mpich-discuss mailing list