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

## Iterative refinement in Pardiso

Beginner
1,398 Views

hi, i'm a beginner with Pardiso in fortran.

is there a way to get information about the accuracy of the solution x when you do iterative refinement with iparm(8) < 0 (extended precision mode). can you get an estimate of something like |Ax - b|/b/ from Pardiso.

thank you for any help.

1 Solution
Moderator
1,189 Views

Hi Bill,

I would like to know the formula and error tolerance used for the backward error check.

>>This is to kindly inform you that, the default check in iparm[7] uses the backward error |r|=|Ax_current - b|, not |delta_x| which is related to the forward error.

perhaps this could be documented and the error data and tolererance printed by pardiso when msglvl = 1.

>> Sure, Thanks for sharing with us the feedback. We have informed the concerned team and will update you.

Best Regards,

Shanmukh.SS

9 Replies
Beginner
1,364 Views

sorry typo, should be |Ax - b|/|b|

| | = norm and x = computed solution to Ax = b

Moderator
1,323 Views

Hi Bill,

Thanks for posting on Intel Communities.

We would like to request you elaborate on your issue a bit as it helps us understand the issue better.

Best Regards,

Shanmukh.SS

Beginner
1,310 Views

hi

i used the code example pardiso_sym_f90.f90 and changed iparm(8) = 10. running the code gives iparm(7) = 4, so 4 iterative refinement steps were done. using iparm(8) = -10 for extended precision also gives iparm(7) = 4 for this example.

what i want to know is how does pardiso decide when to stop iterative refinement.

is it based on the change in the solution x at each iterative refinement step, something like |delta_x|/|x_current| or something like what i suggested: |Ax_current - b|/|b|, so |Ax_current - b| is the norm of the current residual or something else.

the documetation doesn't say anything about this. can the user get any information from pardiso about the achieved accuracy, like |delta_x|/|x_current| or |Ax_current - b|/|b| or something similar .

thank you.

Moderator
1,268 Views

Hi Bill,

Thanks for the elaboration on your required details.

The maximum number of iterative refinement steps that the solver performs. The solver performs not more than the absolute value of iparm[7] steps of iterative refinement. The solver might stop the process before the maximum number of steps if

• a satisfactory level of accuracy of the solution in terms of backward error is achieved,
• or if it determines that the required accuracy cannot be reached. In this case the solver returns -4 in the error parameter.

The number of executed iterations is reported in iparm[6].

Best Regards,

Shanmukh.SS

Moderator
1,245 Views

Hi Bill,

A gentle reminder:

It had been a while since we heard back from you. Could you please let us know if you need any other information?

Best Regards,

Shanmukh.SS

Beginner
1,235 Views

hi Shanmukh.SS

sorry for delay - had trouble with account.

you wrote iterative refinement stops when

* a satisfactory level of accuracy of the solution in terms of backward error is achieved

i would like to know the formula and errror tolerance used for the backward error check. perhaps this could be documented and the error data and tolererance printed by pardiso when msglvl = 1.

thank you.

Moderator
1,190 Views

Hi Bill,

I would like to know the formula and error tolerance used for the backward error check.

>>This is to kindly inform you that, the default check in iparm[7] uses the backward error |r|=|Ax_current - b|, not |delta_x| which is related to the forward error.

perhaps this could be documented and the error data and tolererance printed by pardiso when msglvl = 1.

>> Sure, Thanks for sharing with us the feedback. We have informed the concerned team and will update you.

Best Regards,

Shanmukh.SS

Beginner
1,173 Views

hi Shanmukh.SS

thank you for accepting my suggestion, i look forward to the changes.

Moderator
1,125 Views

Hi Bill,

Sure! Thanks for accepting. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.

Have a great day!

Best Regards,

Shanmukh.SS