[petsc-users] superlu ILUT preconditioner break

Hong Zhang hzhang at mcs.anl.gov
Sun Jul 17 10:10:35 CDT 2011


Gong Ding :
You found the exact reason, which we have reported to the superlu team
earlier this year.
See Sherry's response attached below.

Hong
---------------------------------------

from	Xiaoye S. Li xsli at lbl.gov
to	Hong Zhang <hzhang at mcs.anl.gov>
cc	Meiyue Shao <myshao at cs.umu.se>
date	Tue, Feb 22, 2011 at 4:46 PM
subject	Re: superlu ilu
hide details Feb 22
Hong,
Thank you very much for the providing the detailed diagnostics.
Apparently, we didn't test the case when dgsisx() is called twice with
separate factorization and solve.

The best solution is to merge this "perm" (row permuation from MC64,
obtained before factorization)) into "perm_r" (row permutation from
partial pivoting duing factorization).  In the end, the routine will
return both permutations in a fused "perm_r".

Meiyue --
Do you agree with this fix?

I will need some time to test this out, and let you know once it's ready.

Sherry

>
> Several months ago, I posted message "superlu ILUT preconditioner break" with following link
> http://lists.mcs.anl.gov/pipermail/petsc-users/2011-March/008355.html
>
> Today I studied this problem carefully to see why it crashes.
>
> The segment fault is arising at line 692 of superlu's dgsisx.c, because the array "perm" is 0.
> This array which contains the permutation calculated from MC64 procedure, can only be initialized when nofact flag is true. However, petsc will call dgsisx twice, with nofact value 1 and 0, respectively.  In the second calling, the perm array is not initialized but be used. That's why the code crash.
>
> Hope this bug can be fixed without too many efforts.
>
> Gong Ding
>
>
>
>
>
>


More information about the petsc-users mailing list