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

How to use IPARM(4)/pre-conditioning in Pardiso?

moortgatgmail_com
890 Views
Hi, I have read the sparse info in the Pardiso manual on how to use iparm(4) to precondition the factorization, but can't get it to work. This is the background: I have to solve a system of identical sparsity structure (and slow/smooth evolution in time) thousands of time, so any possible speed up is essential. The system is structurally symmetric, so I have reduced the pardiso solver to initialize and do phase 11 only once, and then phase 22 and phase 33 at every time-step.

However, I am hoping that there could be further optimization, and using pre-conditioning with iparm(4) was suggested to me. I have tried using iparm(4) = 31 and 61 at either the phase 22 and/or just phase 33 but do not get proper results.

Any suggestions would be appreciated.
--Joachim
0 Kudos
6 Replies
Sergey_Solovev__Inte
New Contributor I
890 Views

Hi, Joachim,

Yes, you set parameters correctly. Could you clarify, what mean "do not get proper result"? Does norm of residual |r-Ax| change after turn on CGS (set less iparm(4)=61) or it is decreased, but not so much?

Could you set iparm(4)=61 before phase 33 and provide us with output parameter iparm(20) (CG/CGS diagnostic)?

Sergey

0 Kudos
moortgatgmail_com
890 Views

Hi, Joachim,

Yes, you set parameters correctly. Could you clarify, what mean "do not get proper result"? Does norm of residual |r-Ax| change after turn on CGS (set less iparm(4)=61) or it is decreased, but not so much?

Could you set iparm(4)=61 before phase 33 and provide us with output parameter iparm(20) (CG/CGS diagnostic)?

Sergey


Hi , Thanks for your reply. By `not proper results' I mean that the solution computed when using pre-conditioning are less accurate / wrong than the ones computed without it. My system of linear equations computes as solution a pressure field (over 10 thousands of finite element edges), which is a smooth/continuous and only slowly changing field. As I mentioned in the original post, I am hoping that I can speed up the pardiso solver past performing phase 22 and phase 33 with the default iparm settings at each time step. To be honest though, I am not familiar with much of the method of CGS pre-conditioning; I'd like to use it if it's faster, but don't really know how to diagnose current issues (such as determining your suggestion|r-Ax| ).

What I have tried is either performing phase 22 only for the first 100 or so time-steps and then switching that step off in favour of iparm(4) = 61 (for instance) + phase 33; or performing phase 22 at every second or third time-step and preconditioning + phase 33 for the others.
As for your question: it does seem like the preconditioning itself succeeds and the output is in the range iparm(20) = 3 (foriparm(4) = 61) to iparm(20) = 22, when I triediparm(4) = 91 in an attempt to improve accuracy. [As a minor question: the CG preconditioning is only for symmetric, and not structurally-symmetric matrices, right?]


As extra information: I am trying to upgrade our solver to Pardiso from umfpack 2.2.1. Using the latter solver, the set-up was as follows:

For the first time-step we performed:

UM*21I: sets the default the control parameters for UM*2FA, UM*2RF,
and UM*2SO.

UM*2FA: factors A into PAQ=LU, finding the pivot order (P and Q)
based on both numerical and fill-reducing criteria. This
routine performs both symbolic and numerical factorization
in a single step.

For all subsequent time-steps, we used:

UM*2RF: factors A into PAQ=LU, using information (same P and Q and the
same symbolic factorization) from a prior call to UM*2FA.
Normally significantly faster than UM*2FA, since UM*2RF only
performs numerical factorization.

UM*2SO: solves a system of linear equations using the factors,
optionally performing iterative refinement.
0 Kudos
Sergey_Solovev__Inte
New Contributor I
890 Views
Hi, it is not easy to understand the reason of problem. Yes, the CG preconditioning is only for symmetric matrices, CGS for unsymmetrical and structural symmetric matrices. The algorithm convergence significantly depends on matrix. The best way for resolution this issue is providing us with test case. If it is impossible, maybe code or pseudo code of using PARDISO?
0 Kudos
Perpf2000
Beginner
890 Views
Hi, I have read the sparse info in the Pardiso manual on how to use iparm(4) to precondition the factorization, but can't get it to work. This is the background: I have to solve a system of identical sparsity structure (and slow/smooth evolution in time) thousands of time, so any possible speed up is essential. The system is structurally symmetric, so I have reduced the pardiso solver to initialize and do phase 11 only once, and then phase 22 and phase 33 at every time-step.

However, I am hoping that there could be further optimization, and using pre-conditioning with iparm(4) was suggested to me. I have tried using iparm(4) = 31 and 61 at either the phase 22 and/or just phase 33 but do not get proper results.

Any suggestions would be appreciated.
--Joachim

...did you guys get it to speed up?

tnx
0 Kudos
wang_j_1
Beginner
890 Views

hi ,phase=33,cpu nearly=0,anyone have this question?

0 Kudos
Gennady_F_Intel
Moderator
890 Views

what do you mean by  that? if cpu nearly like you said 0, is it bad?

0 Kudos
Reply