- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Can someone please help me on these lengthy (sorry) questions? Or, are these pretty straight forward for you guys?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page