Problem creating a non-square MPIAIJ Matrix

Satish Balay balay at mcs.anl.gov
Fri Feb 16 15:55:24 CST 2007


On Fri, 16 Feb 2007, Shi Jin wrote:

> > We are stoing the diagonal block and offdiagonal block
> > separately. However both blocks are on the same processor. i.e
> > each processor stores m*N values - in 2 submatrices m*n,
> > m*(N-n). To understand this better - check manpage for
> > MatCreateMPIAIJ().

> Thanks. But this is completely different from what I
> read from the PETSC mannual.  
> http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/Mat/MatCreateMPIAIJ.html
> Here is says:
> "The DIAGONAL portion of the local submatrix of a
> processor can be defined as the submatrix which is
> obtained by extraction the part corresponding to the
> rows r1-r2 and columns r1-r2 of the global matrix,
> where r1 is the first row that belongs to the
> processor, and r2 is the last row belonging to the
> this processor. This is a square mxm matrix. The
> remaining portion of the local submatrix (mxN)
> constitute the OFF-DIAGONAL portion."

This text was proably writen assuming that the initial matrix was a
square MxM matrix [in which case the diagonal blocks are also
square]. This text should be corrected to reflect the 'rectangular'
matrix case as well.

>  So the two matrices are mxm and mx(N-m) instead of what you said:
> mxn and mx(N-n) However, the code seems to act like what you
> described.

This interpreatation of the partitionling is not possible. You are
assuming the following partitioning - which PETSc doesn't support.


  1 2 3 4 | 0 0
  0 0 0 0 | 0 0
  0 0 0 0 | 0 0
  0 0 0 0 | 0 0
  -------------
  0 0 | 0 0 0 0
  0 0 | 0 0 0 0
  0 0 | 0 0 0 0
  0 0 | 0 0 0 0
  
Note: the primary purpose of storing diagonal & offdiagonal blocks is
to separate comutation that requires messages from compuattion that
does not - in a MatVec.

i.e We the current petsc partitioning - the diagonal block can be
processed without any communication. [with a matching vec partitioning
- as mentioned in an earlier e-mail]

The above scheme - with different column partitioning on each node -
doesn't help with this [and removes the primary purpose for storing
the matrix blocks separately]

Satish

> They are equivalent for square matrices but not the same for
> non-square matrices like the one I showed.  Could you please clarify
> whether the manual is accurate or not?




More information about the petsc-users mailing list