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 >