<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 29, 2015 at 11:32 AM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><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"><span class="">Mark Adams <<a href="mailto:mfadams@lbl.gov">mfadams@lbl.gov</a>> writes:<br>
<br>
> I don't need your branch because 1) we are not doing any communication in<br>
> this VecAssembly<br>
<br>
</span>There is still synchronization cost in determining that nothing needs to<br>
be done. </blockquote><div><br></div><div>I added:</div><div><br></div><div>VecSetOption(m_xx,VEC_IGNORE_OFF_PROC_ENTRIES,PETSC_TRUE);<br></div><div><br></div><div>Doesn't this remove the synchronization?</div><div> </div><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">Moreover, using a size P MPI_Allreduce for that (in<br>
PetscMaxSum) is non-scalable. My branch uses MPI_Reduce_scatter_block<br>
(scalable) when available (MPI-2.2).<br>
<span class=""><br>
> and I added the IGNORE stuff<br>
<br>
</span>So it takes no time now and everything is groovy?<br>
</blockquote></div><br></div></div>