Showing results for

- Intel Community
- Software Development SDKs and Libraries
- Intel® oneAPI Math Kernel Library & Intel® Math Kernel Library
- Using mkl functions for solving system of linear equations with UPDATED RHS vector

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

Highlighted
##

Ioannis_K_

Beginner

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

03-29-2018
07:04 AM

26 Views

Using mkl functions for solving system of linear equations with UPDATED RHS vector

Hello,

I am interested in using mkl for a code that involves solution of a system of linear equations: {x} = {b}, where , {b} are given and we want to find vector {x}. My code has to solve this system of equations repeat..., but for different values of {b}. The value of {b} at each iteration depends on the value of {x} f...

Initialize {x}

do i = 1,Niter

[Find {b}, given {x}]

[Solve {x} = {b} and find updated {x}]

end do !i

Given that the coefficient array does not change during the specific iterative algorithm, I would like to ask whether and how exactl...-arrays) to only "invert" once (in the first iteration), then maintain the "inversion" information stored into and then simply call mkl routines to only do the "back-substitution" in all subsequent iterations i...

I need to mention that I have previously used DGESV and PARDISO, but have not figured out how to employ them for "back-substitution only".

Thanks in advance!!

1 Reply

Highlighted
##

mecej4

Black Belt

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

03-30-2018
09:34 PM

26 Views

Instead of using a "driver routine" such as Dgesv, use "computational routines" such as dgetrf+dgetrs. The first, Dgetrf, needs only to be called once, to factor A into its upper and lower triangular factors, an operation that takes O(N^{3}) operations. Subsequently, Whenever you have a new value of b available, call Dgetrs to obtain the solution x, an operation that takes O(N^{2}) operations.

You can organize your work similarly in the sparse matrix case. Pardiso organizes its work into "phases". The first two phases need only be performed once, and Pardiso will have stored the factors at that point. The third phase can be called as often as needed with different R.H.S. vectors to obtain the corresponding solutions.

For more complete information about compiler optimizations, see our Optimization Notice.