[petsc-dev] PETSc LU, Lapack and Preconditioning Matrices
Dave Nystrom
dnystrom1 at comcast.net
Sat Dec 17 11:24:40 CST 2011
Barry Smith writes:
>
> On Dec 16, 2011, at 10:26 PM, Dave Nystrom wrote:
>
> > Barry Smith writes:
> >> Dave,
> >>
> >> Band solvers (like in LAPACK) handle all the matrix entries from the band
> >> to the diagonal as nonzero (even though in your case the vast majority of
> >> those values are zero). General purpose sparse solvers like PETSc, MUMPS,
> >> SuperLU etc explicitly handle only the nonzero values and fill induced by
> >> those nonzero values. By first reordering the matrix sparse direct solvers
> >> end up having much much less fill than a bandsolver and hence are much
> >> faster. Band solvers only make sense when the matrix is dense within the
> >> band and not mostly empty like with PDE problems.
> >
> > Hi Barry,
> >
> > Thanks for this detailed and useful explanation. That helps a lot. I'll
> > cross band solvers off my list of things to investigate. Should I expect
> > much improvement using MUMPS or SuperLU via PETSc?
>
> Not sequentially. But they run in parallel so can do much larger problems.
Thanks. Are there any near term plans to integrate superlu_mt into petsc?
> Barry
>
> > I'm looking forward to giving them a try. I'm also looking forward to
> > seeing what I can do with a separate preconditioner matrix.
> >
> > Thanks again for your reply.
> >
> > Cheers,
> >
> > Dave
> >
> >> Barry
> >>
> >> On Dec 16, 2011, at 6:12 PM, Dave Nystrom wrote:. .
> >>
> >>> Matthew Knepley writes:
> >>>> On Fri, Dec 16, 2011 at 9:37 AM, Dave Nystrom <dnystrom1 at comcast.net> wrote:
> >>>>
> >>>>> I'm trying to figure out whether I can do a couple of things with petsc.
> >>>>>
> >>>>> 1. It looks like the preconditioning matrix can actually be different from
> >>>>> the full problem matrix. So I'm wondering if I could provide a different
> >>>>> preconditioning matrix for my problem and then do an LU solve of the
> >>>>> preconditioning matrix using the -pc_type lu as my preconditioner.
> >>>>
> >>>> Yes, that is what it is for.
> >>>
> >>> Thanks. I think I will try that and see what sort of results I get. This
> >>> sounds like a very encouraging discovery to me.
> >>>
> >>>>> 2. When I build petsc, I use the --download-f-blas-lapack=yes option. I'm
> >>>>> wondering if petsc uses lapack under the hood or has the capability to use
> >>>>> lapack under the hood when one uses the -pc_type lu option. In particular,
> >>>>> since my matrices are band matrices from doing a discretization on a 2d
> >>>>> regular mesh, I'm wondering if the petsc lu solve has the ability to use
> >>>>> the lapack band solver dgbsv or dgbsvx. Or is it possible to use the
> >>>>> lapack band solver through one of the external packages that petsc can
> >>>>> interface with. I'm interested in this capability for smaller problem
> >>>>> sizes that fit on a single node and that make sense.
> >>>>
> >>>> We do not have any banded matrix stuff. Its either dense or sparse right
> >>>> now.
> >>>
> >>> OK. I had always been used to thinking of a banded system as sparse,
> >>> relatively speaking, when compared to a full system. Based also on Barry's
> >>> response, I guess I am not well enough educated on the nuances of sparse
> >>> versus banded. For instance, when I use "-ksp_type preonly -pc_type lu" to
> >>> solve one of my systems, I had assumed that the LU factorization computed by
> >>> petsc was really filling in the 2*nx+1 bandwidth even though petsc might not
> >>> be explicitly using the banded nature of the matrix. So I am not sure at all
> >>> what is going on under the hood in petsc for this set of solver options. Nor
> >>> do I really know how to find out without reading the source code which might
> >>> be fairly daunting.
> >>>
> >>>>> 3. I'm also wondering how I might be able to learn more about the petsc
> >>>>> ilu capability. My impression is that it does ilu(k) and I have tried
> >>>>> it with k>0 but am wondering if one of the options might allow it to do
> >>>>> ilut and whether as k gets big whether ilu(k) approximates lu. I
> >>>>> currently do not understand the petsc ilu well enough to know how much
> >>>>> extra fill I get as I increase k and where that extra fill might be
> >>>>> located for the case of a band matrix that one gets from discretization
> >>>>> on a regular 2d mesh.
> >>>>
> >>>> We do not do ilu(dt). Its complicated, and we determined that it was not
> >>>> worth the effort. You can get that from Hypre is you want. Certainly, for
> >>>> big enough k, ilu(k) is lu but its a slow way to do it.
> >>>
> >>> Thanks. I need to experiment more with ilu(k) on a couple of my linear
> >>> systems.
> >>>
> >>>> Matt
> >>>>
> >>>>
> >>>>> Thanks,
> >>>>>
> >>>>> Dave
> >>
>
More information about the petsc-dev
mailing list