[petsc-users] Preconditioner for LSQR

Jose E. Roman jroman at dsic.upv.es
Tue Mar 1 04:49:08 CST 2022


To use SLEPc's TSQR one would do something like this:

  ierr = BVCreateFromMat(A,&X);CHKERRQ(ierr);
  ierr = BVSetFromOptions(X);CHKERRQ(ierr);
  ierr = BVSetOrthogonalization(X,BV_ORTHOG_CGS,BV_ORTHOG_REFINE_IFNEEDED,PETSC_DEFAULT,BV_ORTHOG_BLOCK_TSQR);CHKERRQ(ierr);
  ierr = BVOrthogonalize(X,R);CHKERRQ(ierr);

But then one would have to use BVDotVec() to obtain Q'*b and finally solve a triangular system with R.
Jose

> El 1 mar 2022, a las 8:36, Pierre Jolivet <pierre at joliv.et> escribió:
> 
> Hello Lucas,
> In your sequence of systems, is A changing?
> Are all right-hand sides available from the get-go?
> In that case, you can solve everything in a block fashion and that’s how you could get real improvements.
> Also, instead of PCCHOLESKY on A^T * A + KSPCG, you could use PCQR on A + KSPPREONLY, but this may not be needed, cf. Jed’s answer.
> 
> Thanks,
> Pierre
> 
>> On 1 Mar 2022, at 12:54 AM, Lucas Banting <bantingl at myumanitoba.ca> wrote:
>> 
>> Hello,
>> 
>> I have an MPIDENSE matrix of size about 200,000 x 200, using KSPLSQR on my machine a solution takes about 15 s. I typically run with six to eight processors.
>> I have to solve the system several times, typically 4-30, and was looking for recommendations on reusable preconditioners to use with KSPLSQR to increase speed.
>> 
>> Would it make the most sense to use PCCHOLESKY on the smaller system A^T * A? 
>> 
>> Thanks,
>> Lucas
> 



More information about the petsc-users mailing list