[petsc-dev] Jed!!!

Anton Popov popov at uni-mainz.de
Mon Apr 28 01:17:07 CDT 2014


The non-scalable conversion from MATNEST to AIJ is already implemented 
in PETSc by Dmitry.
The function is called MatConvert_Nest_AIJ. It is in the sources, but 
not in documentation.
I tried it ones, but it didn't work. So maybe it's time to look at it again.

As far as I understand it is non-scalable because it exchanges the index 
ranges between all the processors.
Whereas a smart version would just exchange between the neighboring 
processors in communication graph.

But as Barry said, the scalability is not an issue for testing, so just 
debugging this function would be enough.

Anton

On 4/27/14 6:32 PM, Jed Brown wrote:
> Barry Smith <bsmith at mcs.anl.gov> writes:
>
>>    I am totally confused and likely users are to. Please point me to an
>>    example that actually uses Matnest the way it is “supposed to be
>>    used”.
> src/snes/examples/tutorials/ex28.c
>
> Note that this does not contain the word "nest".  That is as intended.
>
>>    I cannot even find a MatSetValues_Nest() so I do not see how one can
>>    even interchange code between AIJ and Nest.
> You're supposed to use MatGetLocalSubMatrix().  Translating from global
> indices to local indices is a disaster that we want to avoid.  So we go
> the other way.  Speak the language of "split local" spaces during
> assembly and the data structure itself can live wherever is most
> efficient for the solver.
>
>>    The users manual has the word nest several times but no indication
>>    of how to use the damn thing.
>  From the manual:
>
>    The key to format-independent assembly is the function
>
>    MatGetLocalSubMatrix(Mat A,IS isrow,IS iscol,Mat *submat);




More information about the petsc-dev mailing list