[petsc-users] extract Mat data

Matthew Knepley knepley at gmail.com
Thu Mar 31 12:06:49 CDT 2011


On Thu, Mar 31, 2011 at 10:10 AM, gouarin <loic.gouarin at math.u-psud.fr>wrote:

> Thanks for the reply.
>
>
> On 31/03/2011 16:48, Hong Zhang wrote:
>
>> Loic,
>>
>>  I want to do the same for MATMPI. This is what I do:
>>>
>>> MatGetLocalMat(A,MAT_INITIAL_MATRIX,&Aloc);
>>> MatGetRowIJ(Aloc, 1, PETSC_FALSE, PETSC_FALSE,&(Acsr.n),&(Acsr.ia),
>>> &(Acsr.ja),&done);
>>> MatGetArray(Aloc,&(Acsr.a));
>>>
>>> Now, I need to know on what process the non local points are.
>>>
>> Each process get its own local submatrix. See
>>
>> http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/Mat/MatCreateMPIAIJ.html
>> on data structure of MPIAIJ format. Applying your statements above to
>> the example listed on the page (a 8x8 matrix), Proc0 will get
>> Aloc=A(0:2,:), ..., Porc2 gets Aloc=A(6:7,:).
>>
>>> Is there a petsc function that gives this partition ?
>>>
>> MatGetOwnershipRange()
>>
> I use this function to know the local points index. In the same way, with
> this function I know the non local index.
>
> But this function doesn't give the process. I give you an example. I have
> this matrix:
>
> 1 0 | 0 1
> 1 2 | 1 0
> -----------
> 0 0 | 1 0
> 0 2 | 0 1
>
> I want this kind of format
>
> for proc 0
> a = {1,1,1,2,1}
> ia = {0,2,5}
> ja = {0,3,0,1,2}
> rank = {0,0,1,1}
>
> for proc 1
> a = {1,2,1}
> ia = {0,1,3}
> ja = {0,2,1}
> rank = {1,1,0}
>
> rank give me the process for each non zero column. Local rows should have
> numbers 1,...N and offdiagonal entries with j>N.
>

The ownership range is the row partition. However, MPIAIJ matrices are not
stored as you indicate above.

Different storage formats make the process you describe fragile. WHy do you
need the CSR form of the matrix? If you really
do, use MatGetSubMatrix() to get a  SEQAIJ matrix on each process and pull
out the values.

   Matt


> I suppose that I have no information about the structure of MPIAIJ.
>
> Loic
>
>


-- 
What most experimenters take for granted before they begin their experiments
is infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20110331/d2572743/attachment.htm>


More information about the petsc-users mailing list