[petsc-users] MUMPS icntl for petsc4py

Quentin Chevalier quentin.chevalier at polytechnique.edu
Sun Jan 22 03:40:11 CST 2023


Hello PETSc users,

I'm getting an INFOG(1)=-9 and INFO(2)=27 error on an eigenvalue code based
on dolfinx run in a docker container. Based on
https://mumps-solver.org/doc/userguide_5.5.1.pdf, I figured the fix would
be to increase ICNTL(14).

I'm coding in python through the petsc4py/slepc4py wrapper. I found a
Mat.setMumpsIcntl method but I can't seem to place it properly and always
obtain another error : "Operation done in wrong order and the like".

Here's the code snippet that is failing :
# Solver
EPS = SLEPc.EPS().create(COMM_WORLD)
EPS.setOperators(-A,M) # Solve Ax=sigma*Mx
EPS.setProblemType(SLEPc.EPS.ProblemType.PGNHEP) # Specify that A is not
hermitian, but M is semi-definite
EPS.setWhichEigenpairs(EPS.Which.TARGET_MAGNITUDE) # Find eigenvalues close
to sigma
EPS.setTarget(sigma)
EPS.setDimensions(2,10) # Find k eigenvalues only with max number of
Lanczos vectors
EPS.setTolerances(1e-9,100) # Set absolute tolerance and number of
iterations
# Spectral transform
ST = EPS.getST(); ST.setType('sinvert')
# Krylov subspace
KSP = ST.getKSP()
KSP.setTolerances(rtol=1e-6, atol=1e-9, max_it=100)
# Krylov subspace
KSP.setType('preonly')
# Preconditioner
PC = KSP.getPC(); PC.setType('lu')
PC.setFactorSolverType('mumps')
KSP.setFromOptions()
EPS.setFromOptions()
PC.getFactorMatrix().setMumpsIcntl(14,50)
print(f"Solver launch for sig={sigma:.1f}...",flush=True)
EPS.solve()
n=EPS.getConverged()

For context, matrix A is complex, size 500k x 500k but AIJ sparse, and I'm
running this code on 36 nodes.

I'd appreciate any insight on how to fix this issue, it's not clear to me
what the order of operations should be. Funnily enough, it's very
shift-dependent.

Cheers,

Quentin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230122/bac7f50c/attachment.html>


More information about the petsc-users mailing list