Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6977 Discussions

What information does PARADISO return in case of singularity?

dsse
Beginner
1,003 Views

Hi all,

the solution of the spare matrix problem, we have to deal with, may fail because of some data errors. In many cases, it is helpful to know where the solver detected the singularity, e.g. this is the index of the pivot element (diagonal pivoting is assumed here).

Checking the error codes of PARADISO, the error code just says "-4" (for zero pivot, numerical factorization or iterative refinement problem).

What other information can be delivered by PARADISO? Does there exist a possibility to get the information at which pivot element the factorization failed?

Thx for answering

0 Kudos
4 Replies
Sergey_P_Intel2
Employee
1,003 Views

Hi!

Thank you for the question.

Of course, PARDISO returns only several values for error codes. But PARDISO could print extended information when message level is greater than zero.

Please try to use msglvl=1 in you program. It could help you to localize the problem.

- Sergey

0 Kudos
Sergey_K_Intel1
Employee
1,003 Views

It should be noted that a perturbed pivot techniques is used by PARDISO for solving symmetric indefinite and general systems. So for these types of systems, if PARDISO finds a zero pivot, it replaces it and solving continue without issuing error message. The usage of iterative refinement is strongly recommended if iparm(14) which is the number of perturbed pivots is not zero. Thus PARDISO doesnt necessary fail if a system is singular.

All the best

Sergey

0 Kudos
dsse
Beginner
1,003 Views

Hi!

Thank you for the question.

Of course, PARDISO returns only several values for error codes. But PARDISO could print extended information when message level is greater than zero.

Please try to use msglvl=1 in you program. It could help you to localize the problem.

- Sergey

Thank you very much for your answersi tries this by a test problem with 1000 unknowns, where line 100 and 500 in the matrix were identical. As a consequence, the matrix is singular. PARDISO switches to perturbed pivots and the factorization is successful.

This however is not alway helpful. How can i prevent PARDISO from using the perturbed pivoting and just stop after a singularity is detected. How can i figure out in what the colum/row the singulatity was detected?

Here is the log from pardiso:


Statistics generated by PARDISO:
--------------------------------
ooc_path got by Env = D:tempooc_configooc
ooc_max_core_size got by Env = 2000
ooc_keep_file got by Env = 0

================ PARDISO: solving a real nonsymmetric system ============


Summary PARDISO: ( reorder to factorize )
================

Times:
======

Time fulladj: 0.001890 s
Time reorder: 0.005029 s
Time symbfct: 0.001113 s
Time A to LU: 0.000000 s
Time numfct : 0.058817 s
Time malloc : 0.002285 s
Time total : 0.070381 s total - sum: 0.001247 s

Statistics:
===========
< Parallel Direct Factorization with #processors: > 1
< Numerical Factorization with Level-3 BLAS performance >

< Linear system Ax = b>
#equations: 1000
#non-zeros in A: 1999
non-zeros in A (%): 0.199900
#right-hand sides: 1

< Factors L and U >
#columns for each panel: 128
#independent subgraphs: 0
< Preprocessing with state of the art partitioning metis>
#supernodes: 999
size of largest supernode: 2
number of nonzeros in L 2001
number of nonzeros in U 999
number of nonzeros in L+U 3000
gflop for the numerical factorization: 0.000004
gflop/s for the numerical factorization: 0.000068

0 Kudos
Alemdar__Bulent
Beginner
1,003 Views
Quoting - dsse

Hi all,

the solution of the spare matrix problem, we have to deal with, may fail because of some data errors. In many cases, it is helpful to know where the solver detected the singularity, e.g. this is the index of the pivot element (diagonal pivoting is assumed here).

Checking the error codes of PARADISO, the error code just says "-4" (for zero pivot, numerical factorization or iterative refinement problem).

What other information can be delivered by PARADISO? Does there exist a possibility to get the information at which pivot element the factorization failed?

Thx for answering

Hi

As far as I know, PARDISO does not provide further informatiion if it fails to solve a symetric positive definite matrix (with matrix type = 2). I was told a while ago that there were some plans to include this in coming versions, but so far it hasn't been addressed with recent releases.

If youuse mtype = -2 (for symetric indefinite matrix), the solver most probably solves it succesfully and it tells you how many negative eigen values are detected (indication of use of pivoting). If it is zero, then no pivoting used. Otherwise, there is likely some sort of singularity found in your matrix (in this case, I suggest you to check your solution vector, and you may see very big or small values ).

Hopefully, they provide us a better solutions for this.

Bulent

0 Kudos
Reply