<div class="gmail_quote">On Thu, Nov 24, 2011 at 12:10, Dmitry Karpeev <span dir="ltr"><<a href="mailto:karpeev@mcs.anl.gov">karpeev@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div>What's the general flavor of these "high-level persistent communication primitives"?</div>

<div>I think it's important to define them at least somewhat in order to understand the rest of the discussion copied here.</div></blockquote></div><br><div>I'm trying to evaluate whether my suggestion is sufficient. It can be described succinctly as offering pointwise broadcast, reduce, gather, and scatter over a bipartite graph where one side is identified as having maximum degree one and the other side---with arbitrarily high degree---can perform reductions and get the results of gathers.</div>
<div><br></div><div>The specification can be provided as either a single-valued function to {(owner rank, offset), NULL} defined on the side with maximum degree one (this has the lowest overhead and can be used directly for communication) or by having the owner list shared processes (in which case the graph is inverted, but this can be done without O(size) storage and without global synchronization).</div>
<div><br></div><div>What I don't want to offer (because I think it is complicated to use and hopefully unnecessary, not because I can't implement it using only moderately heavier data structures) is to have arbitrary degree on both sides.</div>