incomplete LU with drop tolerance

Alejandro Garzon gtg100n at mail.gatech.edu
Tue Sep 4 09:18:57 CDT 2007


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







More information about the petsc-users mailing list