[petsc-users] Zero pivot in LU factorisation

Toby T.W.Searle at sms.ed.ac.uk
Thu Jul 25 04:38:32 CDT 2013


Dear all,

I have a generalised matrix problem: A x = lambda B x. My matrix B is 
diagonal and positive semi-definite. My matrix A is a non-hermitian 
complex matrix.

My problem is essentially that when using the SLEPc generalised 
eigenvalue solver I get the error "zero pivot in LU factorisation". The 
rest of the below is details about the problem and things I have tried 
so far.



The matrix will be at its largest about 48000 by 48000, and I want to 
find the eigenvalues. The eigenvalues I am interested in are ones with 
the largest real part near 0+0i. Ideally, I want to be able to find them 
even if they are internal (i.e when there are other eigenvalues with 
larger positive real part in the spectrum). However, I would be happy if 
I could get it to work for problems where all eigenvalues have real 
parts < 0 apart from the eigenvalue of interest.

At the moment I have used the scipy linalg.eig and sparse.eigs 
functions. As far as I know, these use LAPACK and ARPACK respectively to 
do the heavy lifting. I have decided to see if I can achieve better 
performance through using the SLEPc library. If this is a bad decision, 
let me know!

I want to move onto using PETSc with the SLEPc eigenvalue solvers. I 
have been trying out SLEPc using the examples provided as part of the 
tutorial. Exercise 7 reads matricies A and B from a file and outputs the 
solutions. I got this to work fine using the matrices provided. However, 
if I substitute a smaller sized test version of my problem (6000x6000), 
I get a variety of errors depending on the command line arguments I supply.

The main problem I have is the error: "zero pivot in LU factorisation!" 
when I use the default settings.

I think this might be related to the fact that B contains rows of zeros, 
although my understanding of linear algebra is somewhat basic. Is this true?

I have tried setting the options suggested on the petsc website, 
-pc_factor_shift_type NONZERO etc but all I get is an additional warning 
that these options were not used

I assumed that this was a problem with the preconditioner, so I tried 
setting -eps_target to 0.1 and both with and without specifying -st_type 
sinvert and shift. Still I get the same error.

Then I tried -st_pc_type jacobi and st_pc_type bjacobi. jacobi runs, but 
does not produce any eigenvalues. Block jacobi does an LU factorisation 
and gives me the same error again.

The default method is krylov-schur, so I have experimented with the 
-eps_type gd and -eps_type jd options. Unfortunately these seem to 
produce nonsense eigenvalues, which do not appear on the spectrum at all 
when I solve using LAPACK in scipy.

I know my matrix problem is not singular, because I can solve it using 
scipy.

Do you know of any books/guides I might need to read besides the PETSC 
and SLEPC manuals to understand the behaviour of all these different 
solvers?

The output from the case with no command line options is given below.

Thanks a lot for taking the time to read this!

Kind Regards,
Toby


tobymac:SLEPC toby$ mpiexec ./ex7 -f1 
LHS-N7-M40-Re0.0-b0.1-Wi5.0-amp0.02.petsc  -f2 
RHS-N7-M40-Re0.0-b0.1-Wi5.0-amp0.02.petsc -eps_view

Generalized eigenproblem stored in file.

[0]PETSC ERROR: --------------------- Error Message 
------------------------------------
[0]PETSC ERROR: Detected zero pivot in LU factorization:
see http://www.mcs.anl.gov/petsc/documentation/faq.html#ZeroPivot!
[0]PETSC ERROR: Empty row in matrix: row in original ordering 2395 in 
permuted ordering 3600!
[0]PETSC ERROR: 
------------------------------------------------------------------------
[0]PETSC ERROR: Petsc Release Version 3.3.0, Patch 5, Sat Dec  1 
15:10:41 CST 2012
[0]PETSC ERROR: See docs/changes/index.html for recent updates.
[0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
[0]PETSC ERROR: See docs/index.html for manual pages.
[0]PETSC ERROR: 
------------------------------------------------------------------------
[0]PETSC ERROR: ./ex7 on a arch-darw named tobymac by toby Thu Jul 25 
10:20:40 2013
[0]PETSC ERROR: Libraries linked from /opt/local/lib
[0]PETSC ERROR: Configure run at Tue Jul 23 15:11:27 2013
[0]PETSC ERROR: Configure options --prefix=/opt/local 
--with-valgrind-dir=/opt/local --with-shared-libraries 
--with-scalar-type=complex --with-clanguage=C++ 
--with-superlu-dir=/opt/local --with-blacs-dir=/opt/local 
--with-scalapack-dir=/opt/local --with-mumps-dir=/opt/local 
--with-metis-dir=/opt/local --with-parmetis-dir=/opt/local 
--COPTFLAGS=-O2 --CXXOPTFLAGS=-O2 --FOPTFLAGS=-O2 
--LDFLAGS=-L/opt/local/lib --CFLAGS="-O2 -mtune=native" --CXXFLAGS="-O2 
-mtune=native"
[0]PETSC ERROR: 
------------------------------------------------------------------------
[0]PETSC ERROR: MatLUFactorSymbolic_SeqAIJ() line 334 in 
/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/mat/impls/aij/seq/aijfact.c
[0]PETSC ERROR: MatLUFactorSymbolic() line 2750 in 
/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/mat/interface/matrix.c
[0]PETSC ERROR: PCSetUp_LU() line 135 in 
/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/impls/factor/lu/lu.c
  Number of iterations of the method: 0
  Number of linear iterations of the method: 0
  Number of requested eigenvalues: 1
  Stopping condition: tol=1e-08, maxit=750
  Number of converged approximate eigenpairs: 0

[0]PETSC ERROR: PCSetUp() line 832 in 
/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/interface/precon.c
[0]PETSC ERROR: KSPSetUp() line 278 in 
/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: PCSetUp_Redundant() line 176 in 
/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/impls/redundant/redundant.c
[0]PETSC ERROR: PCSetUp() line 832 in 
/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/interface/precon.c
[0]PETSC ERROR: KSPSetUp() line 278 in 
/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: STSetUp_Shift() line 94 in src/st/impls/shift/shift.c
[0]PETSC ERROR: STSetUp() line 280 in src/st/interface/stsolve.c
[0]PETSC ERROR: EPSSetUp() line 204 in src/eps/interface/setup.c
[0]PETSC ERROR: EPSSolve() line 109 in src/eps/interface/solve.c
tobymac:SLEPC toby$


-- 
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.



More information about the petsc-users mailing list