<div><div dir="auto">Thanks Barry</div></div><div><br><div class="gmail_quote"><div dir="ltr">On Fri, 3 Aug 2018 at 20:08, Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
   Hmm, I think the current code makes the most sense.</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
    In your case what if the two "from" values destined for the same "to" location are different values, then your algorithm is ill-defined; </blockquote><div dir="auto"><br></div><div dir="auto">Indeed - but I can ensure this won't occur.</div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">which of the two values "wins"? <br>
<br>
    To get the effect you want I think you need to insure that two different "from" locations are not destined for the same "to" location when you create the scatter.</blockquote><div dir="auto"><br></div><div dir="auto">Yeah ok</div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
    Barry<br>
<br>
    If you really need the effect you want and cannot fix the scatter you could use a MATSHELL to mimic the MATSCATTER behavior except using the INSERT_VALUES instead.</blockquote><div dir="auto"><br></div><div dir="auto">Due to various reason of my DM implementation this is kind of awkward to do. Since I'd like to keep using the MatScatter API for consistency else where in the code base, I think Instead I'll just override the mat mult method for my special use case / DM implementation.</div><div dir="auto"><br></div><div dir="auto">Cheers,</div><div dir="auto">  Dave</div><div dir="auto"><br></div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
> On Aug 3, 2018, at 3:09 AM, Dave May <<a href="mailto:dave.mayhem23@gmail.com" target="_blank">dave.mayhem23@gmail.com</a>> wrote:<br>
> <br>
> Hi,<br>
> <br>
> I am wondering why MatMult_Scatter() internally uses ADD_VALUES with VecScatter{Begin,End} rather than INSERT_VALUES?<br>
> <br>
> In the event that the IS used by the scatter defines duplicate values in the to[] array, e.g. two ranks define the same value of where to insert a value, then the current implementation of MatMult_Scatter produces the incorrect result.<br>
> <br>
> You could argue that the user defined IS is wrong in this case as it contains duplicate to[] values. My particular use case of MatScatter relates to defining an injection operator between two DMs. For this case, I'd argue that that we should just be using INSERT_VALUES rather than ADD_VALUES inside MatMult_Scatter.<br>
> <br>
> Thoughts?<br>
> <br>
> <br>
> Cheers,<br>
>   Dave<br>
<br>
</blockquote></div></div>