<div dir="ltr">On Mon, Apr 15, 2013 at 10:04 AM, Hui Zhang <span dir="ltr"><<a href="mailto:mike.hui.zhang@hotmail.com" target="_blank">mike.hui.zhang@hotmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
On Apr 15, 2013, at 4:53 PM, Jed Brown wrote:<br>
<br>
> Hui Zhang <<a href="mailto:mike.hui.zhang@hotmail.com">mike.hui.zhang@hotmail.com</a>> writes:<br>
><br>
>> Is the following correct?<br>
>><br>
>> From my understanding before,<br>
>><br>
>> AOCreateBasic(MPI_Comm comm,PetscInt napp,const PetscInt myapp[],const PetscInt mypetsc[],AO *aoout)<br>
>><br>
>> should be called by all the processors in 'comm' and each involved processor provides only part of all the indices.<br>
>> For example, 'comm' contains two processors proc0,<br>
>><br>
>> on proc0: napp= 3, myapp[]= {0,1,2}, mypetsc[]= {4,3,2}<br>
>><br>
>> on proc1: napp= 2, myapp[]= {3,4}, mypetsc[]= {0,1}<br>
>><br>
>> so that union of myapp[] of proc0 and proc1 gives 0,..,4, and union of myapp[] of proc0 and proc1 also gives 0,..,4.<br>
>><br>
>> This seemed to work even if I fed AOApplicationToPetsc with indices on proc0 larger than 2.<br>
>> But now I suspect I was wrong after reading<br>
>><br>
>> <a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/AO/AOCreateBasic.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/AO/AOCreateBasic.html</a><br>
>><br>
>> The question is whether AOCreateBasic will do union of the input indices automatically, or the AO is only for the input indices?<br>
><br>
> AOCreateBasic does an allgather on the indices so it can translate any<br>
> indices. This is not memory scalable and we don't recommend using it<br>
> unless you know your problem sizes are not very large, but some people<br>
> want to translate arbitrary indices non-collectively.<br>
<br>
Thanks! Is the problem you mentioned serious when the indices to be translated on each processor include only a few ones beyond the input myapp[] of AOCreateBasic?<br>
Because I only use AO for FEM assembly so I would not translate too many beyond local ranges.<br></blockquote><div><br></div><div style>If your problem gets large, this will be a problem.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Another question: do the inputs IS's to AOCreateBasicIS include all the indices, and AOCreateBasicIS would not do any gathering of indices?</blockquote></div><br>No, its the same thing.</div><div class="gmail_extra">
<br></div><div class="gmail_extra"> Matt<br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>