[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