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