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

Clarification of a part of the Pardiso manual NEEDED

xin_xu
Beginner
310 Views
Hi,
I found the part of the pardiso manual explaining "iparm(31)- partial solution for sparse right-hand sides and sparse solution" confusing. You can find the manual here:http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm
1) There are emphasises like "the right hand side must be sparse". I suppose this does not mean structurally sparse because the right hand side is passed into pardiso using dense matrix.
2) When iparm(31) = 1, "You can setperm(i)= 1 only if thei-th component of the right hand side is nonzero." Can I trick the solver by setting the i-th component of the right hand side to 1e-20? I don't understand what the logic is for this constraint.
3) "To useiparm(31)=2, you must set thei-th component of the right hand side to zero explicitly ifperm(i)is not equal to 1." This is related to question 2. And this statement sounds like instructing me to change my equation to be solved because I "must set thei-th component of the right hand side to zero explicitly"
4) "Ifiparm(31)=3, the right hand side can be of any type and you must setperm(i)= 1 to compute thei-th component in the solution vector." What "type" do you mean the 'right hand side' can be?
5) "The permutation vectorpermmust be present in all phases of Intel MKL PARDISO software. At the reordering step, the software overwrites the input vectorpermby a permutation vector used by the software at the factorization and solver step. Ifmis the number of components such thatperm(i)= 1, then the lastmcomponents of the output vectorpermare a set of the indicesisatisfying the conditionperm(i)= 1 on input."
I have to admit that I am not an experienced user of PARDISO. By reading the above discription, I don't know how to set perm for the partial solve purpose because it will be overwriten by PARDISO at the factorization and solver step.
What is the purpose of "Ifmis the number of components such thatperm(i)= 1, then the lastmcomponents of the output vectorpermare a set of the indicesisatisfying the conditionperm(i)= 1 on input"?
Thanks in advance for any help in clarification!!
Regards,
Xin
0 Kudos
3 Replies
xin_xu
Beginner
310 Views
Can someone please help me on these lengthy (sorry) questions? Or, are these pretty straight forward for you guys?
0 Kudos
Sergey_K_Intel1
Employee
310 Views
Hi Xin,

Yes the right hand side is alwayspassed into pardiso using dense matrix.In thecases of iparm(31)=1 and iparm(31)=2 it is assumed that the right hand side has relatively few non-zero components (e.g. it is sparse). The emphasise "the right hand side must be sparse" onlymeans this structure of the right hand side. The difference between iparm(31)=1 and iparm(31)=2 is the following. In the case of iparm(31)=2, all components of the solution vector are computed and since that all components of the right hand side have to be used for finding the solution. Since thatthe MKLReference Manual says "To useiparm(31)=2, you must set thei-th component of the right hand side to zero explicitly ifperm(i)is not equal to 1." It considers that rhs(j) is zero if it is exactly equal to zero. In the case of iparm(31)=1 PARDISO onlyusesthe non-zerocomponents of theright-hand sidevector and onlycomputes corresponding components in the solution vector. So in the case of iparm(31)=1, if ipem(i) =0 (e.g. rhs(i) isassumed to be zero), theactualvalues of the i-thcomponent of the right hand sidecan be any.

The setting iparm(31)=3 is quitedifferent from iparm(31)=1 andiparm(31)=2 andit is intended forpartial solve (e.g. for finding selected components of the solution vector). Thenon-zero elements of theperm arrayare used differently andthe perm array is not related to the right hand side. All components of the right hand side are used forcomputing selected components of the solution vector. In this case, the perm arrayis onlyused to indicatewhich components of thesolution vector must be computed.

As concernsyour last question, the purpose ofof "Ifmis the number of components such thatperm(i)= 1, then the lastmcomponents of the output vectorpermare a set of the indicesisatisfying the condition perm(i)= 1 on input" is quick finding numbers ofall componentscomputed by PARDISO.And it also helps to restore the initial perm(i) if it is necessary.

All the best
Sergey






0 Kudos
xin_xu
Beginner
310 Views
Hello, Sergey,
Thanks very much for your patience! It is much clearer now.
The part I am still not sure is the last part. But I think I need to test some cases before I ask further questions on that.
Thanks again & Regards,
Xin
0 Kudos
Reply