How to set the parameters of PARDISO for a higher precision?

How to set the parameters of PARDISO for a higher precision?

Dear all,

I am trying to solve a matrix of "mtype = 13", however, by the parameters given in example code, I can't get a good solution. For a case with size about100,000, the residual error ||A*x-b||/||b|| is larger than 1.e-4 which is not acceptable, where ||b||>1. Could anyone tell me how to set the parameters to get a better solution (for real value matrix, the residual error could reach to 1.e-10~1.e-13)?

Thanks,

Zhanghong Tang

12 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Dear Zhanghong,

It seems to me you have tried to solve ill-conditioned system. You could try to improve solution with the help of iterative refinement by setting iparm(8) to the maximum number of iterative refinement steps. Iteretive refinement uses quad precision so it might help.

All the best

Sergey

Dear Sergey,

Thank you very much for your kindly reply. It seems that the setting doesn't work for my problem. I changed the iparm(8) from 10 to 100 but the result didn't improve. Now my parameters is as follows, are there any other parameters should be modified?

iparm(1)=1

iparm(2)=2

iparm(3)=1

iparm(8)=100

iparm(10)=13

iparm(11)=1

iparm(13)=1

iparm(21)=1

Thanks,

Zhanghong Tang

Dear Zhanghong,

Probably iparm(21)=0 (it means that PARDISO will use 1x1 diagonal pivoting) or larger value of iparm(10) might help. In the case of ill-conditioned matrices,even another fill-in reducing reordering might help as well since the system is quite sensitive to any perturbation. So playing with reordering might help.

Another way is to reduce the condition number of the coefficient matrix. Usually the typical wayfor reducing the condition number of the systemis to use a regularization method. There are many methods of regularization of ill-conditioned problems and some of them are domainspecific.

All the best

Sergey

Dear Sergey,

Thank you very much for your kindly help. I tried to set the iparm(21) = 0 and change iparm(10). Just as you say, the residual error is very sensitive to the value of iparm(10). For some cases, iparm(10) = 10 can let the residual error reach to 1.e-6 but when iparm(10) =9 or 11 will lead tothe results of1.e0 or 1.e2, but for some other cases, results change totally.

In addition, I tried to increase iparm(8) but no improvement got. Should I reset any other parameters also?

For your two other methods, reordering and reducing the condition number, could you please give me more detailed information? I tried to use the AMD reordering in PARDISO, but got an error result (the residual error reached to 1.e67). As far as I know, reducing the condition number of the matrix is only used in iterative solvers, how can I use it in PARDISO?

Thanks,

Zhanghong Tang

Dear Zhanghong,

It seems to me you have already used all possible ways for improving accuracy available in PARDISO.Would you tell me what is the dimension of your system? If it is small, you can compute the condition number of your system by calling DGESVD routine? I think it is better to be sure that such behavior was caused by large condition number.

Let me also remind thatthe accuracy of the computed solution depends on the condition number and the relative machineprecision (it's about 2*10-16) so theerror bound is the following: || x - x_computed || / || x|| < const*eps*cond where cond is the condition number, eps is the relative machine precision, x and x_computed are the exact and computed solutions . So it looks like the condition number of your system is pretty large I assume that the condition number of your system is significantly larger than10^16. If so and if the norm of residual vector is about 10e-3, the obtained solution can be considered as excellent result. J.R.Rice in hiswell-known book Matrix Computations and mathematical software stated that if the problem is ill-conditioned, then no amount of effort, trickery, or talent used in the computation can produce accurate answers except by chance.

So you can not expect a good solution from an ill-conditioned system. The best solution to these problems is to avoid constructing matrices that may be ill-conditioned, for example, by eliminating some part of equations along with corresponding variable which might linear combination of other equations.

All the best

Sergey

Dear Sergey,

Thank you again for your kindly reply. Thanks for your so good suggests. I will read the book you mentioned carefully and try your solution suggest.

Usually the sizes of my systems are about 150,000~1,000,000 (at this time the PARDISO failed). I have computed the condition number of a system (about 50,000 unknowns) by Matlab and its condition number is about 1.e8, I remembered that the PARDISO also failed on this case. I don't know what order of the condition number for larger system.

An interest thing is that when the PARDISO solver failed, we can get a better (satisfied)solution by other solvers, such as UMFPACK and SUPERLU, however, they are too slow and will spend too much memory compared with PARDISO.

Thanks,

Zhanghong Tang

Dear Zhanghong,

Could you please submit a Quad through premier.intel.comwith the case when PARDISO fails and UMFPACK and SuperLU can solve? Please don't forget to supplythe coeffient matrix,input parameter settings, OS type,versions of MKL and compiler used. Please also mention the number of this forumthread.

Thanks in advance

All the best

Sergey

Dear Sergey,

I found a case (the residual error reaches to 1.e2)but it is somewhat large. The matrix is saved as coordinate format and it is about 35MB even I compressed it into ZIP file. Can I submit so large file?

Thanks,

Zhanghong Tang

I don't know what the size limit is off-hand, but I do see some files at premier support that are at least that big. Please go ahead and submit the issue and your files. If you have any problems the person handling your case can provide alternatives as well.

Thanks!

Dear Sergey,

Thank you very much for your kindly reply. Now I put a smaller example to the "premier support" in which the residual error also reach to 1.e-2. But it is still not "small enough", while other solvers can get a better solution. The issue number I report the problem is 477302.

Thanks,

Zhanghong Tang

Quote:

Sergey Kuznetsov (Intel) wrote:

Dear Zhanghong,

Could you please submit a Quad through premier.intel.comwith the case when PARDISO fails and UMFPACK and SuperLU can solve? Please don't forget to supplythe coeffient matrix,input parameter settings, OS type,versions of MKL and compiler used. Please also mention the number of this forumthread.

Thanks in advance

All the best

Sergey

Hi Sergey,

I have a similar problem that Pardiso fails but PETSc can solve it. I post the data, source code and results in the forum. Please look into http://software.intel.com/en-us/forums/topic/418442.

Thanks,

Daniel

Leave a Comment

Please sign in to add a comment. Not a member? Join today