[petsc-dev] Lagging the numerical factorization for one of the fields of fieldsplit preconditioner

Barry Smith bsmith at mcs.anl.gov
Tue Mar 15 18:13:15 CDT 2011


On Mar 15, 2011, at 6:09 PM, Jed Brown wrote:

> On Wed, Mar 16, 2011 at 00:01, Barry Smith <bsmith at mcs.anl.gov> wrote:
> When a submatrix set is obtained from an AIJ it could mark the ranges the submatrices, row and column, then when MatSetValues is called in the future on the big matrix it could check what box the values are being put in and any box that has none put in is unchanged. For this to be efficient the submatrices have to be truly submatrices not just logically submatrix.
> 
> [A B; C D]
> 
> Two cases:
> 
> 1. If you only modify A, then the columns of B will still be marked unmodified so you know that B has not been changed so the cheap flag works.
> 
> 2. Modify B and C, now the rows and columns of A and D will both be marked as modified. The cheap flag doesn't work.

  You cannot just check the row and column separately. You need to check them as a pair.  If row < m and column < n mark A as changed. If row > m-1 and column < n mark B as checked etc. 
  
   I am not sure this is practical, but my point is that this information can in theory be tracked.

  
> 
> 
> Also, if any of these blocks is a finite element assembly, the user will typically zero the matrix before assembly. (They can avoid it by doing a traversal with MatSetValues(...,zero,INSERT_VALUES), then an assembly, then run over it again with ADD_VALUES, but that's awfully cumbersome.)
> 
> 
>  But we should muck around on this a bit more before we figure out how we want to handle the propagation of this kind of information efficiently and automatically.
> 
> Agree




More information about the petsc-dev mailing list