further about PCComputeExplicitOperator()

Barry Smith bsmith at mcs.anl.gov
Fri May 2 11:50:21 CDT 2008


   Application of a preconditioner is almost always a dense operator.  
The only exception is sparse
approximate inverse and in fact this is why the sparse approximate  
inverse is a lousy preconditioner.
So I don't think you would ever want to compute the preconditioner  
into a sparse matrix.

   If you want the SPAI preconditioner explicitly as a PETSc sparse  
matrix you should go into that
code, figure out how the SPAI stores its computed preconditioner and  
convert it to the PETSc
format.

   Note also:
PCComputeExplicitOperator - Computes the explicit preconditioned  
operator.
this means it computes B*A or A*B (depending on left or right  
preconditioning). This beasty
(unless you use Jacobi preconditioning) is always dense and it makes  
no sense to store in
sparse format except for fun.

    Barry


On May 1, 2008, at 8:08 PM, Yujie wrote:

> when 1 processor is used, the matrix M in  
> PCComputeExplicitOperator(pc,&M) uses MATSEQDENSE type. Now, I want  
> to use MATSEQAIJ, I change the codes as follows:
> 1563 if (size == 1) {
> 1564 //05/01/08
> 1565 //ierr = MatSetType(*mat,MATSEQDENSE);CHKERRQ(ierr);
> 1566 //ierr =  
> MatSeqDenseSetPreallocation(*mat,PETSC_NULL);CHKERRQ(ierr);
> 1567 ierr = MatSetType(*mat,MATSEQAIJ);CHKERRQ(ierr);
> 1568 ierr = MatSeqAIJSetPreallocation(*mat, 
> 0,PETSC_NULL);CHKERRQ(ierr);
> 1569
> 1570 } else {
> 1571 ierr = MatSetType(*mat,MATMPIAIJ);CHKERRQ(ierr);
> 1572 ierr = MatMPIAIJSetPreallocation(*mat,0,PETSC_NULL, 
> 0,PETSC_NULL);CHKERRQ(ierr);
> 1573 }
>
> PCApply is fast when running. However,  MatSetValues() is very very  
> slow when some arraies need to set. I find that the problem likely  
> lies in
> MatSeqXAIJReallocateAIJ(A,A->rmap.n, 
> 1,nrow,row,col,rmax,aa,ai,aj,rp,ap,imax,nonew,MatScalar) in  
> MatSetValues_SeqAIJ() after debugging the codes.
> I can't further figure out where is the problem. Because it is  
> difficult to debug. Could you give me some advice? thanks a lot.
>
> the version of PETSc is 2.3.3-p8.
>
> thanks a lot.
>
> Regards,
> Yujie
>
>
>
>




More information about the petsc-users mailing list