[petsc-dev] Question About Petsc ILU

Mark F. Adams mark.adams at columbia.edu
Thu Dec 29 13:18:15 CST 2011


On Dec 29, 2011, at 12:45 PM, Dave Nystrom wrote:

> Jed Brown writes:
>> On Thu, Dec 29, 2011 at 11:01, Dave Nystrom <dnystrom1 at comcast.net> wrote:
>> 
>>> I have recently added the capability to have a separate preconditioning
>>> matrix in the petsc interface for the code I am working with.  I have two
>>> types of preconditioning matrices that I have questions about.  One is
>>> tridiagonal and the other is 7 diagonals.  In both cases, the the diagonals
>>> are all lexically adjacent.  Or phrased differently, the tridiagonal matrix
>>> has a bandwidth of 3 and the 7 diagonal matrix has a bandwidth of 7 and so
>>> they are compact or dense band systems.
>>> 
>>> I was wondering what petsc ilu will do for preconditioning matrices like
>>> these.  Will it produce an exact lu factorization or a nearly exact
>>> factorization?
>> 
>> Yes
>> 
>>> I'm interested in the answer to this question because I am thinking I
>>> might be able to run this preconditioner on the gpu using the txpetscgpu
>>> package.
>> 
>> Likely pointless because this solve is probably not a big part of run-time.
>> The bigger concern is the convergence rate that you lose by using this
>> approximation. Matt and I mentioned this the last time you brought it up,
>> but I recommend getting familiar with the literature. Then, get the math
>> straight before looking for ways to transform into problems that you can
>> run fast on a GPU or whatever. If you just optimize kernels, you're likely
>> to optimize something that takes a small part of run-time and isn't really
>> helping you anyway.
> 
> So the application code is one that I am not the primary author on and it is
> a 2d resistive MHD with extensions code for magnetized fusion problems.
> Magnetized fusion problems tend to be highly anisotropic with qualitatively
> different physics parallel and perpendicular to the magnetic field.  The code
> has 3 approaches to solving the linear systems.  One is a suite of native cg
> solvers that use a cholesky solver for the inner band of the matrix as the
> preconditioner.  As noted, this preconditioner ignores the coupling to the
> second coordinate.  However, this preconditioner produces the lowest
> iteration count of the various preconditioner approaches that I have tried.
> 

This sounds like it is and SPD matrix.  I would think GAMG would be OK.  If you can set -pc_gamg_verbose -ksp_monitor' and send me the output I can see of anything jumps out.

> The second solver approach is use of the agmg package which works well on all
> of the linear solves except for the Hall matrix.  For the Hall matrix, agmg
> fails to produce a solution.
> 

Are you using CG and Cholesky for the Hall matrix?  If so it is probably a div(alpha(x)grad(u)).

Mark

> The third approach is an interface to petsc that I have added in the last few
> months.  So far, I have been able to get really good results with petsc on
> all of the linear systems except for the Hall matrix.  In general, the
> fastest solution on these other linear systems has been petsc using jacobi
> preconditioning running on the gpu.  However, I think I may be able to do
> even better on these other systems using petsc with the separate
> preconditioning matrix and using ilu plus txpetscgpu.
> 
> But, having invested the time to interface to petsc, I am now trying to
> explore the vast set of options available to me to see what works best for my
> problems from the petsc toolbox.  But solving the Hall matrix, especially for
> larger mesh sizes, still remains problematic.  The lead author of this code
> is investigating the Hall matrix formulation to see if there are better ways
> to either formulate it or solve it and I am exploring what petsc has to offer
> for solving it.  The matrix is very ill conditioned.  The formulation is
> complicated enough that perhaps there is just a bug somewhere.  But these
> sort of questions are being investigated by the main author of the code.
> 
> Anyway, I have so far gotten good performance gains using the gpu with petsc
> but am totally open to and am trying to explore the whole petsc toolbox.
> 




More information about the petsc-dev mailing list