With shift-and-invert, the internal KSP solves a system with coefficient matrix A-sigma*M, so maybe that is the difference with respect to solving with A only. Jose > El 11 jun 2024, a las 15: 24, Miroslav Kuchta <miroslav. kuchta@ gmail. com>
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
 
ZjQcmQRYFpfptBannerEnd
With shift-and-invert, the internal KSP solves a system with coefficient matrix A-sigma*M, so maybe that is the difference with respect to solving with A only.

Jose


> El 11 jun 2024, a las 15:24, Miroslav Kuchta <miroslav.kuc...@gmail.com> escribió:
> 
> This Message Is From an External Sender
> This message came from outside your organization.
> Dear mailing list, 
> 
> I have a question regarding memory usage in SLEPc. Specifically, I am running out of memory when solving a generalized 
> eigenvalue problem Ax = alpha Mx. Here M is singular so we set the problem type as GNHEP and solve with Krylov-Schur 
> method and shift-and-invert spectral transform. The matrix A come from Stokes like problem so the transform is set to use 
> a block diagonal preconditioner B where each of the blocks (through fieldsplit) uses hypre. The solver works nicely on smaller 
> problems in 3d (with about 100K dofs). However, upon further refinement the system size gets to millions of dofs and we run 
> out of memory (>150GB). I find it surprising because KSP(A, B) on the same machine works without issues. When running 
> with "-log_trace -info" I see that the memory requests before the job is killed come from the preconditioner setup
> 
> [0] PCSetUp(): Setting up PC for first time
> [0] MatConvert(): Check superclass seqhypre mpiaij -> 0
> [0] MatConvert(): Check superclass mpihypre mpiaij -> 0
> [0] MatConvert(): Check specialized (1) MatConvert_mpiaij_seqhypre_C (mpiaij) -> 0
> [0] MatConvert(): Check specialized (1) MatConvert_mpiaij_mpihypre_C (mpiaij) -> 0
> [0] MatConvert(): Check specialized (1) MatConvert_mpiaij_hypre_C (mpiaij) -> 1
> 
> Interestingly, when solving just the problem Ax = b with B as preconditioner I don't see any calls like the above. We can get access 
> to a larger machine but I am curious if our setup/solution strategy can be improved/optimized. Do you have any advice on how to
> reduce the memory footprint? 
> 
> Thanks and best regards, Miro


Reply via email to