<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Instead of using a &amp;quot;driver in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Using-mkl-functions-for-solving-system-of-linear-equations-with/m-p/1162374#M27989</link>
    <description>&lt;P&gt;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&lt;SUP&gt;3&lt;/SUP&gt;) operations. Subsequently, Whenever you have a new value of b available, call Dgetrs to obtain the solution x, an operation that takes O(N&lt;SUP&gt;2&lt;/SUP&gt;) operations.&lt;/P&gt;

&lt;P&gt;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.&lt;/P&gt;</description>
    <pubDate>Sat, 31 Mar 2018 04:34:16 GMT</pubDate>
    <dc:creator>mecej4</dc:creator>
    <dc:date>2018-03-31T04:34:16Z</dc:date>
    <item>
      <title>Using mkl functions for solving system of linear equations with UPDATED RHS vector</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Using-mkl-functions-for-solving-system-of-linear-equations-with/m-p/1162373#M27988</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;I am interested in using mkl for a code that involves solution of a system of linear equations: &lt;A&gt;{x} = {b}, where &lt;/A&gt;&lt;A&gt;, {b} are given and we want to find vector {x}. My code has to solve this system of equations repeatedly (for many iterations), for THE SAME MATRIX &lt;/A&gt;&lt;A&gt;, but for different values of {b}.&amp;nbsp; The value of {b} at each iteration depends on the value of {x} from the previous iteration, so the algorithm is something like this:&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Initialize {x}&lt;/P&gt;

&lt;P&gt;do i = 1,Niter&lt;/P&gt;

&lt;P&gt;[Find {b}, given {x}]&lt;/P&gt;

&lt;P&gt;[Solve &lt;A&gt;{x} = {b} and find updated {x}]&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;end do !i&lt;/P&gt;

&lt;P&gt;Given that the coefficient array &lt;A&gt; does not change during the specific iterative algorithm, I would like to ask whether and how exactly I could use the DGESV and PARDISO routines (I am interested in both full and sparse &lt;/A&gt;&lt;A&gt;-arrays) to only "invert" &lt;/A&gt;&lt;A&gt; once (in the first iteration), then maintain the "inversion" information stored into &lt;/A&gt;&lt;A&gt; and then simply call mkl routines to only do the "back-substitution" in all subsequent iterations i = 2,3,...,Niter.&amp;nbsp;&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;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".&lt;/P&gt;

&lt;P&gt;Thanks in advance!!&lt;/P&gt;</description>
      <pubDate>Thu, 29 Mar 2018 14:04:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Using-mkl-functions-for-solving-system-of-linear-equations-with/m-p/1162373#M27988</guid>
      <dc:creator>Ioannis_K_</dc:creator>
      <dc:date>2018-03-29T14:04:54Z</dc:date>
    </item>
    <item>
      <title>Instead of using a "driver</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Using-mkl-functions-for-solving-system-of-linear-equations-with/m-p/1162374#M27989</link>
      <description>&lt;P&gt;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&lt;SUP&gt;3&lt;/SUP&gt;) operations. Subsequently, Whenever you have a new value of b available, call Dgetrs to obtain the solution x, an operation that takes O(N&lt;SUP&gt;2&lt;/SUP&gt;) operations.&lt;/P&gt;

&lt;P&gt;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.&lt;/P&gt;</description>
      <pubDate>Sat, 31 Mar 2018 04:34:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Using-mkl-functions-for-solving-system-of-linear-equations-with/m-p/1162374#M27989</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2018-03-31T04:34:16Z</dc:date>
    </item>
  </channel>
</rss>

