Question about GPU-parflow version running Failure with MGSemi Preconditioner

26 views
Skip to first unread message

zitong jia

unread,
Jul 2, 2025, 1:16:06 PMJul 2
to ParFlow

Dear everyone,

I’m currently using the GPU-accelerated version of ParFlow and encountered an issue that I hope you can help clarify. According to the official documentation and GitHub discussions, GPU acceleration is only supported when using the MGSemi linear preconditioner. However, in my case, whenever I set:

pfset Solver.Linear.Preconditioner MGSemi

the solver fails to converge or crashes with a KINSOL_KRYLOV_FAILURE. On the other hand, when I use:

pfset Solver.Linear.Preconditioner PFMG

the simulation runs successfully - though of course without GPU acceleration.


My domain is a structured rectangular grid, and I’m using Solver.TerrainFollowingGrid = True, with Richards equation. There is no explicit mask applied, but some boundary regions are assigned 0 values for parameters such as permeability or pressure. Could that be implicitly triggering behavior incompatible with MGSemi?


Here are some relevant solver settings I'm using:

pfset Solver                                          Richards
pfset Solver.TerrainFollowingGrid                     True
#pfset Solver.TerrainFollowingGrid.SlopeUpwindFormulation  Upwind
pfset Solver.Spinup                                   True
                                                         
pfset Solver.MaxIter                                  500000
pfset Solver.Drop                                     1E-20
pfset Solver.AbsTol                                   1E-8
pfset Solver.MaxConvergenceFailures                   8
pfset Solver.Nonlinear.MaxIter                        250
pfset Solver.Nonlinear.ResidualTol                    1e-6

## new solver settings for Terrain Following Grid
pfset Solver.Nonlinear.EtaChoice                         EtaConstant
pfset Solver.Nonlinear.EtaValue                          0.001
pfset Solver.Nonlinear.UseJacobian                       True
pfset Solver.Nonlinear.DerivativeEpsilon                 1e-16
pfset Solver.Nonlinear.StepTol  1e-30
pfset Solver.Nonlinear.Globalization                     LineSearch
pfset Solver.Linear.KrylovDimension                      70
pfset Solver.Linear.MaxRestarts                           2


pfset Solver.Linear.Preconditioner                       PFMG
pfset Solver.Linear.Preconditioner.PCMatrixType     FullJacobian
pfset Solver.Linear.Preconditioner.PFMG.NumPreRelax    3
pfset Solver.Linear.Preconditioner.PFMG.NumPostRelax    2

Could you please advise on:

  1. What are the strict requirements for using MGSemi successfully with GPU acceleration?

Reply all
Reply to author
Forward
0 new messages