[petsc-users] Profile a matrix-free solver.
Song Gao
song.gao2 at mail.mcgill.ca
Fri Jan 15 10:52:29 CST 2016
Hello, Barry,
Thanks for your prompt reply. I ran the matrix-based solver with
matrix-based SGS precondioner. I see your point. The profiling table is
below and attached.
So Matmult takes 4% time and PCApply takes 43% time.
MatMult 636 1.0 9.0361e+00 1.0 9.21e+09 1.0 7.6e+03 1.1e+04
0.0e+00 4 85 52 17 0 4 85 52 17 0 3980
PCApply 636 1.0 8.7006e+01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
1.9e+03 43 0 0 0 24 43 0 0 0 24 0
The way I see it, the matrix-free solver spends most of the time (70%) on
matmult or equivalently rhs evaluation. Every KSP iteration, one rhs
evaluation is performed. This is much more costly than a matrix vector
product in a matrix-based solver. Perhaps this is expected in matrix-free
solver.
I will start look at the rhs evaluation since it takes the most time.
Thanks.
Song Gao
2016-01-14 16:24 GMT-05:00 Barry Smith <bsmith at mcs.anl.gov>:
>
> So
>
> KSPSolve is 96 % and MatMult is 70 % + PCApply 24 % = 94 % so this
> makes sense; the solver time is essentially the
> multiply time plus the PCApply time.
>
> compute_rhs 1823 1.0 4.2119e+02 1.0 0.00e+00 0.0 4.4e+04 5.4e+04
> 1.1e+04 71 0100100 39 71 0100100 39 0
> LU-SGS 1647 1.0 1.3590e+02 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
> 0.0e+00 23 0 0 0 0 23 0 0 0 0 0
> SURFINT 1823 1.0 1.0647e+02 1.1 0.00e+00 0.0 0.0e+00 0.0e+00
> 0.0e+00 17 0 0 0 0 17 0 0 0 0 0
> VOLINT 1823 1.0 2.2373e+02 1.1 0.00e+00 0.0 0.0e+00 0.0e+00
> 0.0e+00 35 0 0 0 0 35 0 0 0 0 0
>
> Depending on the "quality" of the preconditioner (if it is really good)
> one expects the preconditioner time to be larger than the MatMult(). Only
> for simple preconditioners (like Jacobi) does one see it being much less
> than the MatMult(). For matrix based solvers the amount of work in SGS is
> as large as the amount of work in the MatMult() if not more, so I would
> expect the time of the preconditioner to be higher than the time of the
> multiply.
>
> So based on knowing almost nothing I think the MatMult_ is taking more
> time then it should unless you are ignoring (skipping) a lot of the terms
> in your matrix-free SGS; then it is probably reasonable.
>
> Barry
>
>
>
> > On Jan 14, 2016, at 3:01 PM, Song Gao <song.gao2 at mail.mcgill.ca> wrote:
> >
> > Hello,
> >
> > I am profiling a finite element Navier-Stokes solver. It uses the
> Jacobian-free Newton Krylov method and a custom preconditoner LU-SGS (a
> matrix-free version of Symmetic Gauss-Seidel ). The log summary is
> attached. Four events are registered. compute_rhs is compute rhs (used by
> MatMult_MFFD). SURFINT and VOLINT are parts of compute_rhs. LU-SGS is the
> custom preconditioner. I didn't call PetscLogFlops so these flops are zeros.
> >
> > I'm wondering, is the percent time of the events reasonable in the
> table? I see 69% time is spent on matmult_mffd. Is it expected in
> matrix-free method? What might be a good starting point of profiling this
> solver? Thank you in advance.
> >
> >
> > Song Gao
> > <log_summary>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160115/35c76544/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: log_summary_matrix_based_version
Type: application/octet-stream
Size: 9473 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160115/35c76544/attachment.obj>
More information about the petsc-users
mailing list