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

## Result error in Pardiso Beginner
171 Views

Hi All,

I have many linear equations derived from flow problem at different time steps. These equations have the same structure (same non-zero entries) but different stiffness matrices and right-hand-sides. The condition number for these matrices are around 4E15, close to ill-conditioned. There seems something wrong with the Pardiso that only the result of the first equation is correct.  I have successfully solved these equations by PETSc and exported the results so as to compare.

The parameters used in Pardiso are as follows:

iparm = 0
iparm(1) = 1 ! no solver default
iparm(2) = 2 ! fill-in reordering from METIS
iparm(3) = 0 ! numbers of processors
iparm(4) = 0 ! no iterative-direct algorithm
iparm(5) = 0 ! 0 no user fill-in reducing permutation
iparm(6) = 0 ! =0 solution on the first n compoments of x
iparm(7) = 0 ! not in use
iparm(8) = 9 ! numbers of iterative refinement steps
iparm(9) = 0 ! not in use
iparm(10) = 13 ! perturbe the pivot elements with 1E-13
iparm(11) = 1 ! use nonsymmetric permutation and scaling MPS
iparm(12) = 0 ! not in use
iparm(13) = 1 ! maximum weighted matching algorithm is switched-on (default for non-symmetric)
iparm(14) = 0 ! Output: number of perturbed pivots
iparm(15) = 0 ! not in use
iparm(16) = 0 ! not in use
iparm(17) = 0 ! not in use
iparm(18) = -1 ! Output: number of nonzeros in the factor LU
iparm(19) = -1 ! Output: Mflops for LU factorization
iparm(20) = 0 ! Output: Numbers of CG Iterations
iparm(27) = 0 ! 1: check matrix error
error = 0 ! initialize error flag
msglvl = 0 ! print statistical information
mtype = 11 ! real unsymmetric

For the source codes, data and results, please look into the attached file.

Thanks and Regards,

Daniel

2 Replies Black Belt
171 Views

With a condition number of 4E15, and the 15.95 decimal digits that 64-bit reals provide, you have less than one reliable digit in your solution. How, then, do you conclude that  "the result of the first equation is correct"?

To proceed further, we need to know more data on a case where you judge the results to be wrong -- for example, you may provide a file containing the Pardiso solutions and another containing the "correct" solutions from another solver (please specify its identity completely). Beginner
171 Views

mecej4 wrote:

With a condition number of 4E15, and the 15.95 decimal digits that 64-bit reals provide, you have less than one reliable digit in your solution. How, then, do you conclude that  "the result of the first equation is correct"?

To proceed further, we need to know more data on a case where you judge the results to be wrong -- for example, you may provide a file containing the Pardiso solutions and another containing the "correct" solutions from another (please specify its identity completely).

I have compared the solution with other two solvers, the origional sequential solver that use ILU precondition and PETSc. The latter two solver can generate close results while Pardiso cannot. More important, this is from a flow problem, we check the results with theoretical analysis and we are sure the results by the other two solvers are correct, at least, resonable.

One question is that Pardiso can solve one equation correctly, seems that for matrices with high condition number, Pardiso may solve it by chance.

Please find the results compare in the attached file (some of them have also been included in the previous attachment), where x_pardiso_i.txt is the result of pardiso, x_PETSc_i.txt is the result of PETSc and x_i.txt is the result of origional sequential solver, i is the ith linear equation.

Thanks,

Daniel 