[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Poor performance with BoomerAMG?



Wow, that is embarrassing...I had put -pc_type_hypre instead of _pc_hypre_type.
Thanks!


-Knut Erik-

Siterer Barry Smith <bsmith@xxxxxxxxxxx>:


BoomerAMG works like a charm. Likely you forgot the -pc_hypre_type boomeramg

   Hmm, I think I'll change the default solver to boomeramg

   Barry

barry-smiths-macbook-pro-17:ksp/examples/tutorials] bsmith% ./ex1f
-ksp_monitor -pc_type hypre -pc_hypre_type boomeramg -m 513 -n 513
-ksp_type richardson -ksp_view
 p=           1
  0 KSP Residual norm 4.213878296084e+03
  1 KSP Residual norm 2.135189837330e+02
  2 KSP Residual norm 1.225934028865e+01
  3 KSP Residual norm 7.255859884400e-01
  4 KSP Residual norm 4.353504737395e-02
  5 KSP Residual norm 2.643035146258e-03
  6 KSP Residual norm 1.628271972668e-04
KSP Object:
  type: richardson
    Richardson: damping factor=1
  maximum iterations=10000, initial guess is zero
  tolerances:  relative=1e-07, absolute=1e-50, divergence=10000
  left preconditioning
PC Object:
  type: hypre
    HYPRE BoomerAMG preconditioning
    HYPRE BoomerAMG: Cycle type V
    HYPRE BoomerAMG: Maximum number of levels 25
    HYPRE BoomerAMG: Maximum number of iterations PER hypre call 1
    HYPRE BoomerAMG: Convergence tolerance PER hypre call 0
    HYPRE BoomerAMG: Threshold for strong coupling 0.25
    HYPRE BoomerAMG: Interpolation truncation factor 0
    HYPRE BoomerAMG: Interpolation: max elements per row 0
    HYPRE BoomerAMG: Number of levels of aggressive coarsening 0
    HYPRE BoomerAMG: Number of paths for aggressive coarsening 1
    HYPRE BoomerAMG: Maximum row sums 0.9
    HYPRE BoomerAMG: Sweeps down         1
    HYPRE BoomerAMG: Sweeps up           1
    HYPRE BoomerAMG: Sweeps on coarse    1
    HYPRE BoomerAMG: Relax down          symmetric-SOR/Jacobi
    HYPRE BoomerAMG: Relax up            symmetric-SOR/Jacobi
    HYPRE BoomerAMG: Relax on coarse     Gaussian-elimination
    HYPRE BoomerAMG: Relax weight  (all)      1
    HYPRE BoomerAMG: Outer relax weight (all) 1
    HYPRE BoomerAMG: Using CF-relaxation
    HYPRE BoomerAMG: Measure type        local
    HYPRE BoomerAMG: Coarsen type        Falgout
    HYPRE BoomerAMG: Interpolation type  classical
  linear system matrix = precond matrix:
  Matrix Object:
    type=seqaij, rows=263169, cols=263169
    total: nonzeros=1313793, allocated nonzeros=1315845
      not using I-node routines
 Iterations:           7

[barry-smiths-macbook-pro-17:ksp/examples/tutorials] bsmith% ./ex1f
-ksp_monitor -pc_type hypre -pc_hypre_type boomeramg -m 513 -n 513
-ksp_type gmres -ksp_view
 p=           1
  0 KSP Residual norm 4.213878296084e+03
  1 KSP Residual norm 5.272381634094e+01
  2 KSP Residual norm 8.107668116258e-01
  3 KSP Residual norm 1.807380875232e-02
  4 KSP Residual norm 4.068259191532e-04
KSP Object:
  type: gmres
    GMRES: restart=30, using Classical (unmodified) Gram-Schmidt
Orthogonalization with no iterative refinement
    GMRES: happy breakdown tolerance 1e-30
  maximum iterations=10000, initial guess is zero
  tolerances:  relative=1e-07, absolute=1e-50, divergence=10000
  left preconditioning
PC Object:
  type: hypre
    HYPRE BoomerAMG preconditioning
    HYPRE BoomerAMG: Cycle type V
    HYPRE BoomerAMG: Maximum number of levels 25
    HYPRE BoomerAMG: Maximum number of iterations PER hypre call 1
    HYPRE BoomerAMG: Convergence tolerance PER hypre call 0
    HYPRE BoomerAMG: Threshold for strong coupling 0.25
    HYPRE BoomerAMG: Interpolation truncation factor 0
    HYPRE BoomerAMG: Interpolation: max elements per row 0
    HYPRE BoomerAMG: Number of levels of aggressive coarsening 0
    HYPRE BoomerAMG: Number of paths for aggressive coarsening 1
    HYPRE BoomerAMG: Maximum row sums 0.9
    HYPRE BoomerAMG: Sweeps down         1
    HYPRE BoomerAMG: Sweeps up           1
    HYPRE BoomerAMG: Sweeps on coarse    1
    HYPRE BoomerAMG: Relax down          symmetric-SOR/Jacobi
    HYPRE BoomerAMG: Relax up            symmetric-SOR/Jacobi
    HYPRE BoomerAMG: Relax on coarse     Gaussian-elimination
    HYPRE BoomerAMG: Relax weight  (all)      1
    HYPRE BoomerAMG: Outer relax weight (all) 1
    HYPRE BoomerAMG: Using CF-relaxation
    HYPRE BoomerAMG: Measure type        local
    HYPRE BoomerAMG: Coarsen type        Falgout
    HYPRE BoomerAMG: Interpolation type  classical
  linear system matrix = precond matrix:
  Matrix Object:
    type=seqaij, rows=263169, cols=263169
    total: nonzeros=1313793, allocated nonzeros=1315845
      not using I-node routines
 Iterations:           4


On Feb 18, 2008, at 1:57 AM, knutert@xxxxxxxxxxxx wrote:

Thank you for the reply, Barry.

The same thing happens if I use hypre with the DMMG solver.
As you say, with hypre, the convergence is extremely slow, requiring
a lot of iterations, 1413 iterations (1820 if I use richardson) for a 257x257
problem, while the default only needs 5.


I use the same way of handling boundary conditions in the two codes.
I've also compared the coeff matrix and rhs, and they are equal.

-Knut Erik-

Siterer Barry Smith <bsmith@xxxxxxxxxxx>:


Run with the DMMG solver with the option -pc_type hypre
What happens? Then run again with the additional option -ksp_type richardson


Is hypre taking many, many iterations which is causing the slow speed?

I expect there is something wrong with your code that does not use DMMG.
Be careful how you handle boundary conditions; you need to make sure
they have the same scaling as the other equations.

 Barry



On Feb 15, 2008, at 8:36 AM, knutert@xxxxxxxxxxxx wrote:

Hi Ben,

Thank you for answering. With gmres and boomeramg I get a run time of
2s, so that is much better. However, if I increase the grid size to
513x513, I get a run time of one minute. With richardson, it fails to converge.
LU gives 6 seconds, CG and ICC gives 7s, and the DMMG solver 3s for the 513x513 problem.


When using the DMMG framework, I just used the default solvers.
I use the Galerkin process to generate the coarse matrices for
the multigrid cycle.

Best,
Knut

Siterer Ben Tay <zonexo@xxxxxxxxx>:

Hi Knut,

I'm currently using boomeramg to solve my poisson eqn too. I'm using it
on my structured C-grid. I found it to be faster than LU, especially as
the grid size increases. However I use it as a preconditioner with
GMRES as the solver. Have you tried this option? Although it's faster,
the speed increase is usually less than double. It seems to be worse if
there is a lot of stretching in the grid.

Btw, your mention using the DMMG framework and it takes less than a
sec. What solver or preconditioner did you use? It's 4 times faster
than GMRES...

thanks!

knutert@xxxxxxxxxxxx wrote:
Hello,

I am trying to use the hypre multigrid solver to solve a Poisson equation.
However, on a test case with grid size 257x257 it takes 40 seconds to converge
on one processor when I run with
./run -ksp_type richardson -pc_type hypre -pc_type_hypre boomeramg


Using the DMMG framework, the same problem takes less than a second,
and the default gmres solver uses only four seconds.

Am I somehow using the solver the wrong way, or is this performance expected?

Regards
Knut Erik Teigen