[petsc-users] Superlu based ILUT report Zero pivot

Xiaoye S. Li xsli at lbl.gov
Fri Nov 4 13:27:29 CDT 2011

The default settings in ILUTP of superlu is "conservative", probably
with less dropping than people want.   The 2 most relevant parameters
to control this are:
    ILU_DropTol :  (default 1e-4),  you can try to set it a larger, e.g., 0.01
    ILU_FillFactor : (default 10),  this allows about a factor of 10
growth in the L & U factors.
                               You can set it lower, e.g., 5 or smaller.

I am a little surprised that you see Zero Pivot (e.g., at column 74).
Since the code does partial pivoting, always tries to pick up the
largest magnitude entry in the current column to pivot. "Zero pivot at
column 74" means at this step column 74 becomes entirely empty.
Perhaps from numerical cancellation, Or the matrix is numerically

The default setting also uses MC64 to permute large entry to the
diagonal during preprocessing.  (Hong, can you please confirm
LargeDiag is set, right?)

If you can send me the matrix in coordinate format (i.e., triplet for
each nonzero), I will be happy to try it.

Sherry Li

On Wed, Nov 2, 2011 at 9:02 AM, Hong Zhang <hzhang at mcs.anl.gov> wrote:
> Gong :
>> I tried ASM + Superlu ILUT for my semicondcutor simulation code.
>> For most of the problems, the ILUT preconditioner is very strong.
>> Fewer KSP iterations are needed to get linear solver convergence compared with default ILU(0) preconditioner.
>> However, ILUT is a bit slow with its default parameters.
>> And sometimes it fault with
>> Fatal Error:Zero pivot in row 74 at line 186 in superlu.c
> We do not have much experience with Superlu ILUT.
> What you can do is try various options provided by superlu
>  -mat_superlu_ilu_droptol <0.0001>: ILU_DropTol (None)
>  -mat_superlu_ilu_filltol <0.01>: ILU_FillTol (None)
>  -mat_superlu_ilu_fillfactor <10>: ILU_FillFactor (None)
>  -mat_superlu_ilu_droprull <9>: ILU_DropRule (None)
>  -mat_superlu_ilu_norm <2>: ILU_Norm (None)
>  -mat_superlu_ilu_milu <0>: ILU_MILU (None)
>> Any suggestion to set some parameters to make it more rubost (and fast)?
> I would also test '-sub_pc_type lu' which might be more efficient than ilu
> if memory is not an issue.
> Mumps sequential LU often outperforms other sequential lu.
> You can 1) install mumps (needs scalapack, blacs and F90 compiler), then
> 2) run with '-sub_pc_type lu -pc_factor_mat_solver_package mumps'.
> Hong
>> Gong Ding

More information about the petsc-users mailing list