- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
I am trying to improve the efficiency of my code but I am new to Pardiso and there are many things left as a mystery to me.
I have to solve many simultaneous equations that change a little bit in every iteration (by iteration I mean steps of my problem not the matrix solver).
Is it possible to some how improve the solution time? (e.g. passing the initial values of x from previous step to Pardiso to find the new solutions faster?)
By the way should I have pt released at the end of each step or use the same pt value in every step?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
I assume that you are solving simultaneous linear equations using the direct solver in Pardiso. If not, the following comments do not apply.
If you are solving A.x = b, and A is not changing from one of your iterations to the next, but the vector/matrix b is, then you can do Phases 1 and 2 just once, and repeatedly do Phase 3 with different values for b. Alternatively, if you know or can compute all the different b vectors in advance, assemble the b vectors into a matrix B, and solve A X = B with a single Phase 3 call to Pardiso.
If the structure of A is fixed but the values of the entries of A may change, you have to perform Phases 2 and 3 in each of your iterations.
The PT array should not be touched until your calculations are completed or you wish to restart calculations with a different matrix (new problem).
Unlike in the nonlinear case, there is no possibility for using a previous solution x as a starting guess. That feature is what distinguishes direct and iterative methods. The 'D' in 'Pardiso' stands for "direct".
コピーされたリンク
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Hello,
If I understand you problem correctly, then you may find useful some of the ideas described at https://software.intel.com/en-us/articles/how-can-your-application-benefit-from-schur-complement-feature-of-intel-pardiso-nonlinear.
Best regards,
Maria
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
I assume that you are solving simultaneous linear equations using the direct solver in Pardiso. If not, the following comments do not apply.
If you are solving A.x = b, and A is not changing from one of your iterations to the next, but the vector/matrix b is, then you can do Phases 1 and 2 just once, and repeatedly do Phase 3 with different values for b. Alternatively, if you know or can compute all the different b vectors in advance, assemble the b vectors into a matrix B, and solve A X = B with a single Phase 3 call to Pardiso.
If the structure of A is fixed but the values of the entries of A may change, you have to perform Phases 2 and 3 in each of your iterations.
The PT array should not be touched until your calculations are completed or you wish to restart calculations with a different matrix (new problem).
Unlike in the nonlinear case, there is no possibility for using a previous solution x as a starting guess. That feature is what distinguishes direct and iterative methods. The 'D' in 'Pardiso' stands for "direct".