I am working on handling very small pivot values for a very small percentage of my matrix (linear Ax = b solution), and I am getting an error that I don't understand when I run the KSPCG solver in parallel.
KSPCreate(comm, &ksp) KSPSetTolerances(ksp, rtol, ...) KSPSetType(ksp, KSPCG) KSPSetInitialGuessNonzero(ksp, PETSC_TRUE) KSPSetFromOptions(ksp) ... KSPSetOperators(ksp, V, V) ... KSPSolve(ksp,...) KSPGetConvergedReason(ksp, &kspReason) if ( kspReason == KSP_DIVERGED_PCSETUP_FAILED ) PCGetSetUpFailedReason(pc, &pcReason) ... Default Case (zeropivot is 2.22045E-14): mpiexec -n 1 ... ==> ksp fails due to pcReason = PC_FACTOR_NUMERIC_ZEROPIVOT Reduced pivot case, n = 1: mpiexec -n 1 ... -pc_factor_zeropivot 1E-15 ==> runs successfully Reduced pivot case, n > 1: mpiexec -n 2 ... -pc_factor_zeropivot 1E-15 ==> ksp fails due to pcReason = PC_SUBPC_ERROR What does this mean? If I use the MUMPS solver and either Cholesky or LU preconditioning instead, it runs fine with any number of MPI ranks, but I'd like to be able to run the CG solver in parallel too. Thanks in advance, Matt Overholt CapeSym, Inc. (508) 653-7100 x204 [email protected]
