- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

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 the`i`-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 the`i`-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 the`i`-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 the`-th component in the solution vector." What "type" do you mean the 'right hand side' can be?`*i*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 indices`i`satisfying 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 indices`i`satisfying 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

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

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 the

`i`-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 indices

`i`satisfying 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

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

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