incomplete LU with drop tolerance

Matthew Knepley knepley at gmail.com
Tue Sep 4 09:32:56 CDT 2007


There are a huge number of variants of ILU. Our interface to SPARSKIT may
be old as we do not have a lot of call for it. Most people are
interested in parallel
versions, such as the ILUDT in Hypre.

I am also not sure how meaningful this comparison will really be. Matlab uses
LAPACK, etc. in the backend to achieve fairly good serial performance. As long
as you are careful, it should be hard to beat it. However, it is
proprietary, not
scalable, and not very portable to typical large scale computing hardware.
Performance on a serial benchmark seems to me to miss the point.

  Thanks,

     Matt

On 9/4/07, Alejandro Garzon <gtg100n at mail.gatech.edu> wrote:
> Hi, I'm trying to find out what is the performance advantage of Petsc
> over Matlab when solving a particular linear system. For the
> comparison to be meaningful I have to use the exact same linear solver
> and preconditioner in both Petsc and Matlab. The one problem I
> have found in this attempt is that I haven't been able to identify
> which options should I give to my Petsc code so that it uses the same
> preconditioner as Matlab's function "luinc" when used in the syntax
> "[L,U]=luinc(A,droptol)". In the Matlab documentation it is said that
> in this syntax the function uses incomplete LU factorization with drop
> tolerance. A similar preconditioner  is available
> in Petsc through the option "-pc_factor_use_drop_tolerance
> <dt>,<dtcol>,<dtcoutn> ". To see if they were exactly the same I tried
> to know about the internal working of each preconditioner. In
> the manual page of the Petsc function "PCFactorSetUseDropTolerance"
> (that sets the same preconditioner as the option above) it is said
> that this preconditioner uses the function "iludt" from SPARSKIT.
> I downloaded SPARSKIT from
> www-users.cs.umn.edu/~saad/software/SPARSKIT/sparskit.html and when
> searching through the source code I couldn't find any function with that
> exact name. My fist question is if the function's name is not
> misspelled in the Petsc documentation both the manual page and the
> Petsc user's manual and if it is not rather "ilutp".
> "ilutp" is documented in Saad's book "Iterative methods for sparse
> linear systems" and at least two of its arguments are similar to those
> of the "-pc_factor_use_drop_tolerance" option, that is, <dt>, the threshold
> or drop tolerance (the "t" in "ilutp") and the number of nonzeros per
> row <dtcount>. The remaining argument, <dtcol>, the "tolerance for
> column pivot", sounds related to the "p" in "ilutp" that stands for
> "pivoting".
>
> There is a main difference between "ilutp" and "luinc" (Matlab) and is
> that the dropping rule is applied by rows in "ilutp" (Saad's book)
> while it is applied by columns in "luinc" (Matlab help).
>
> If the function used by Petsc is "ilutp" I have to conclude that the
> preconditioner implemented by the Matlab function "luinc(A,droptol)" is not
> available in Petsc. Could you validate or deny this?
>
> Through the PCSHELL preconditioner a custom preconditioner can be
> implemented. But this looks like difficult job. Could I generate the
> preconditioner matrices with Matlab, read them on a Petsc program
> and use them as preconditioner? Is there a quick way to do this by
> using PCSHELL?
>
> Thanks.
>
> --
> Alejandro
>
>
>
>
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which
their experiments lead.
-- Norbert Wiener




More information about the petsc-users mailing list