Jose, thanks for adding pARMS.<div><br></div><div>I wonder if there is something wrong or if I'm just not using it correctly. I'm testing with ksp ex2 and it works fine in serial:</div><div><br></div><div><div>$ mpiexec -n 1 ./ex2 -m 50 -n 50 -ksp_converged_reason -pc_type parms</div>
<div>Linear solve converged due to CONVERGED_RTOL iterations 10</div><div>Norm of error 9.34118e-05 iterations 10</div></div><div><br></div><div>but it diverges in parallel:</div><div><br></div><div>$ mpiexec -n 2 ./ex2 -m 50 -n 50 -ksp_converged_reason -pc_type parms</div>
<div>Linear solve did not converge due to DIVERGED_DTOL iterations 630</div><div>Norm of error 3.12589e+06 iterations 630</div><div><br></div><div>I can make it "converge" by turning off restart, but the algebraic residual is actually large indicating that the preconditioner is actually nonlinear.</div>
<div><br></div><div>$ mpiexec -n 2 ./ex2 -m 50 -n 50 -ksp_converged_reason -pc_type parms -ksp_gmres_restart 1000</div><div>Linear solve converged due to CONVERGED_RTOL iterations 81</div><div>Norm of error 30.4982 iterations 81</div>
<div><br></div><div>Indeed, using FGMRES makes it converge</div><div><br></div><div>$ mpiexec -n 2 ./ex2 -m 50 -n 50 -ksp_converged_reason -pc_type parms -ksp_gmres_restart 1000 -ksp_type fgmres</div><div>Linear solve converged due to CONVERGED_RTOL iterations 71</div>
<div>Norm of error 0.000150845 iterations 71</div><div><br></div><div>but avoiding restarts is really critical</div><div><br></div><div><div>$ mpiexec -n 2 ./ex2 -m 50 -n 50 -ksp_converged_reason -pc_type parms -ksp_gmres_restart 30 -ksp_type fgmres</div>
<div>Linear solve converged due to CONVERGED_RTOL iterations 771</div><div>Norm of error 0.00202382 iterations 771</div></div><div><br></div><div><br></div><div>What do you think about making the preconditioner linear by default? Is there a way to make it more tolerant of restarts, at least for such a simple problem (2D Laplace, 5-point stencil, uniform grid)?</div>