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 <pie...@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 <banti...@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
> 

Reply via email to