Good Morning, I usually solve a non-symmetric discretization of the Poisson equation using GAMG+FGMRES. In the last days I tried to use BCGS in place of FGMRES, still using GAMG as preconditioner. No problem in finding the solution but I'm experiencing something I didn't expect. The test case is a 25 millions cells domain with Dirichlet and Neumann boundary conditions. Both the solvers are able to solve the problem with an increasing number of MPI processes, but: * FGMRES is about 25% faster than BCGS for all the processes number * Both solvers have the same scalability from 48 to 384 processes * Both solvers almost use the same amount of memory (FGMRES use a restart=30) Am I wrong expecting less memory consumption and more performance from BCGS with respect to FGMRES? Thank you in advance for any help. Best regards, Marco Cisternino
It is not surprising. BCGS uses less memory for the Krylov vectors, but that might be a small fraction of the total memory used (considering your matrix and GAMG). FGMRES(30) needs 60 work vectors (2 per iteration). If you're using a linear (non-iterative) preconditioner, then you don't need a flexible method -- plain GMRES should be fine. FGMRES uses the unpreconditioned norm, which you can also get via -ksp_type gmres -ksp_norm_type unpreconditioned. This classic paper shows that for any class of nonsymmetric Krylov method, there are matrices in which that method outperforms every other method by at least sqrt(N). https://epubs.siam.org/doi/10.1137/0613049 Marco Cisternino <[email protected]> writes:
Good Morning, I usually solve a non-symmetric discretization of the Poisson equation using GAMG+FGMRES. In the last days I tried to use BCGS in place of FGMRES, still using GAMG as preconditioner. No problem in finding the solution but I'm experiencing something I didn't expect. The test case is a 25 millions cells domain with Dirichlet and Neumann boundary conditions. Both the solvers are able to solve the problem with an increasing number of MPI processes, but:
* FGMRES is about 25% faster than BCGS for all the processes number * Both solvers have the same scalability from 48 to 384 processes * Both solvers almost use the same amount of memory (FGMRES use a restart=30) Am I wrong expecting less memory consumption and more performance from BCGS with respect to FGMRES? Thank you in advance for any help.
Best regards, Marco Cisternino
See https://doc.comsol.com/5.5/doc/com.comsol.help.comsol/comsol_ref_solver.27.1... The Iterative Solvers - COMSOL Multiphysics<https://doc.comsol.com/5.5/doc/com.comsol.help.comsol/comsol_ref_solver.27.123.html> The relaxation factor ω to some extent controls the stability and convergence properties of a numerical solver by shifting its eigenvalue spectrum. The optimal value for the relaxation factor can improve convergence significantly — for example, for SOR when used as a solver. However, the optimal choice is typically a subtle task with arbitrary complexity. doc.comsol.com We use BCGS for constant memory while gmres without restart requires increased memory but has predictable convergence than BCGS. Hong ________________________________ From: petsc-users <[email protected]> on behalf of Jed Brown <[email protected]> Sent: Wednesday, September 29, 2021 5:28 PM To: Marco Cisternino <[email protected]>; [email protected] <[email protected]> Subject: Re: [petsc-users] FGMRES and BCGS It is not surprising. BCGS uses less memory for the Krylov vectors, but that might be a small fraction of the total memory used (considering your matrix and GAMG). FGMRES(30) needs 60 work vectors (2 per iteration). If you're using a linear (non-iterative) preconditioner, then you don't need a flexible method -- plain GMRES should be fine. FGMRES uses the unpreconditioned norm, which you can also get via -ksp_type gmres -ksp_norm_type unpreconditioned. This classic paper shows that for any class of nonsymmetric Krylov method, there are matrices in which that method outperforms every other method by at least sqrt(N). https://epubs.siam.org/doi/10.1137/0613049 Marco Cisternino <[email protected]> writes:
Good Morning, I usually solve a non-symmetric discretization of the Poisson equation using GAMG+FGMRES. In the last days I tried to use BCGS in place of FGMRES, still using GAMG as preconditioner. No problem in finding the solution but I'm experiencing something I didn't expect. The test case is a 25 millions cells domain with Dirichlet and Neumann boundary conditions. Both the solvers are able to solve the problem with an increasing number of MPI processes, but:
* FGMRES is about 25% faster than BCGS for all the processes number * Both solvers have the same scalability from 48 to 384 processes * Both solvers almost use the same amount of memory (FGMRES use a restart=30) Am I wrong expecting less memory consumption and more performance from BCGS with respect to FGMRES? Thank you in advance for any help.
Best regards, Marco Cisternino
participants (3)
-
Jed Brown -
Marco Cisternino -
Zhang, Hong