<div class="gmail_extra">On Tue, Dec 11, 2012 at 12:43 AM, Torsten Hoefler <span dir="ltr"><<a href="mailto:htor@illinois.edu" target="_blank">htor@illinois.edu</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im">On Sun, Dec 09, 2012 at 04:55:51PM -0800, Jed Brown wrote:<br>
>    Understood. May I ask what is the application motivating this routine?<br>
</div>For the neighbor_reduce, the use-case follows from your earlier emails<br>
(you asked explicitly for this on the collectives mailinglist in<br>
<a href="mailto:CAM9tzSmY38bq3gmYqwB5TS5jOv8uwTU9e526tANHDTYgX4XOBg@mail.gmail.com">CAM9tzSmY38bq3gmYqwB5TS5jOv8uwTU9e526tANHDTYgX4XOBg@mail.gmail.com</a>). The<br>
neighbor_reducev is a simple generalization and gets closer to what you<br>
were asking for. I think it's non-trivial to provide identity elements<br>
in the interface while it's not too hard to just put the data into the<br>
function (and hopefully not too much overhead).<br></blockquote><div><br></div><div>Those use cases (<a href="http://lists.mpi-forum.org/mpi3-coll/2011/11/0239.php">http://lists.mpi-forum.org/mpi3-coll/2011/11/0239.php</a>) were all dependent on being able to reduce to overlapping targets.</div>
<div><br></div><div>As for defining "identity", the operation I would like is to reduce by combining with a local buffer (usually in-place destination buffer). That is, if I have the local buffer</div><div><br></div>
<div>mine = [1.1, 2.1, 3.1, 4.1, 5.1, 6.1]<br><br>and vector types for my two neighbors (defined by me)</div><div><br></div><div>incoming_type[0] = [0, 3, 4]</div><div>incoming_type[1] = [1, 4]</div><div><br></div><div>with incoming data (actually getting sent)</div>
<div><br></div><div>incoming_data[0] = [10.2, 20.2, 30.2]</div><div>incoming_data[1] = [100.3, 200.3]</div><div><br></div><div>the result would be</div><div><br></div><div>[op(1.1, 10.2), op(2.1, 100.3), 3.1, op(4.1, 20.2), op(5.1, 30.2, 200.3), 6.1]</div>
<div><br></div><div><br></div><div>This would be a natural expression of the operation I call "SFReduce" in <a href="http://59A2.org/files/StarForest.pdf">http://59A2.org/files/StarForest.pdf</a></div><div><br></div>
</div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
If you now think there is no use-case for any of those (or both)<br>
functions then we should discontinue the discussion of them (I have<br>
absolutely no problem with this :-).</blockquote></div><br></div><div class="gmail_extra">I'm not optimistic about their utility without support for reduction into different/overlapping targets.</div>