<?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 Re: MKL Pardiso Factorize once for many solves in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852493#M6655</link>
    <description>&lt;DIV style="margin: 0px; height: auto;"&gt;&lt;/DIV&gt;
Thanks for the info. Do you know of any clear example where the factorization is done first, followed by multiple solves. Multiple RHS solves using matrix of vectors is not exactly what I want because each subsequent RHS vector in my problem depends on the previous solve. Thanks again, Greg.&lt;BR /&gt;&lt;BR /&gt;(To clear this up, we want to call pardiso once with a phase of 12, then call it multiple times with a phase of 33 using a RHS vector which depends on the result of the previous pardiso call)&lt;BR /&gt;</description>
    <pubDate>Fri, 24 Apr 2009 08:27:17 GMT</pubDate>
    <dc:creator>greg_rowe</dc:creator>
    <dc:date>2009-04-24T08:27:17Z</dc:date>
    <item>
      <title>MKL Pardiso Factorize once for many solves</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852491#M6653</link>
      <description>Can I use Pardiso to factorize the matrix once and then use that factorization to solve successive rhs vectors?</description>
      <pubDate>Thu, 23 Apr 2009 14:24:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852491#M6653</guid>
      <dc:creator>greg_rowe</dc:creator>
      <dc:date>2009-04-23T14:24:26Z</dc:date>
    </item>
    <item>
      <title>Re: MKL Pardiso Factorize once for many solves</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852492#M6654</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/421782"&gt;greg.rowe&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;Can I use Pardiso to factorize the matrix once and then use that factorization to solve successive rhs vectors?&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
Hi Greg,&lt;BR /&gt;&lt;BR /&gt;you can. You control this (as well as other stages of computations) by setting &lt;EM&gt;phase&lt;/EM&gt; code. From manual:&lt;BR /&gt;&lt;BR /&gt;Phase 1: Fill-reduction analysis and symbolic factorization&lt;BR /&gt;Phase 2: Numerical factorization&lt;BR /&gt;Phase 3: Forward and Backward solve including iterative refinements&lt;BR /&gt;This phase can be divided into two or three separate substitutions: forward, backward, and diagonal (see above).&lt;BR /&gt;Termination and Memory Release Phase (phase 0)&lt;BR /&gt;&lt;BR /&gt;phase Solver Execution Steps &lt;BR /&gt;11 Analysis&lt;BR /&gt;12 Analysis, numerical factorization&lt;BR /&gt;13 Analysis, numerical factorization, solve, iterative refinement&lt;BR /&gt;22 Numerical factorization&lt;BR /&gt;23 Numerical factorization, solve, iterative refinement&lt;BR /&gt;33 Solve, iterative refinement&lt;BR /&gt;331 like phase=33, but only forward substitution&lt;BR /&gt;332 like phase=33, but only diagonal substitution&lt;BR /&gt;333 like phase=33, but only backward substitution&lt;BR /&gt;0 Release internal memory for L and U matrix number mnum&lt;BR /&gt;-1 Release all internal memory for all matrices&lt;BR /&gt;&lt;BR /&gt;So, for factorization only you'll have something along the lines below:&lt;BR /&gt;&lt;BR /&gt;! Factorization.&lt;BR /&gt;phase = 22 ! only factorization&lt;BR /&gt; CALL pardiso (pt, maxfct, mnum, mtype, phase, n, a, ia, ja, 1 idum, nrhs, iparm, msglvl, ddum, ddum, error)&lt;BR /&gt;&lt;BR /&gt;See also &lt;EM&gt;Examples for Sparse Symmetric Linear Systems&lt;/EM&gt; in the manual.&lt;BR /&gt;&lt;BR /&gt;As any solver it handles multiple RHS vectors at one call as well (see nrhs parameter).&lt;BR /&gt;&lt;BR /&gt;A.&lt;BR /&gt;</description>
      <pubDate>Fri, 24 Apr 2009 02:38:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852492#M6654</guid>
      <dc:creator>ArturGuzik</dc:creator>
      <dc:date>2009-04-24T02:38:47Z</dc:date>
    </item>
    <item>
      <title>Re: MKL Pardiso Factorize once for many solves</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852493#M6655</link>
      <description>&lt;DIV style="margin: 0px; height: auto;"&gt;&lt;/DIV&gt;
Thanks for the info. Do you know of any clear example where the factorization is done first, followed by multiple solves. Multiple RHS solves using matrix of vectors is not exactly what I want because each subsequent RHS vector in my problem depends on the previous solve. Thanks again, Greg.&lt;BR /&gt;&lt;BR /&gt;(To clear this up, we want to call pardiso once with a phase of 12, then call it multiple times with a phase of 33 using a RHS vector which depends on the result of the previous pardiso call)&lt;BR /&gt;</description>
      <pubDate>Fri, 24 Apr 2009 08:27:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852493#M6655</guid>
      <dc:creator>greg_rowe</dc:creator>
      <dc:date>2009-04-24T08:27:17Z</dc:date>
    </item>
    <item>
      <title>Re: MKL Pardiso Factorize once for many solves</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852494#M6656</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/421782"&gt;greg.rowe&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; Thanks for the info. Do you know of any clear example where the factorization is done first, followed by multiple solves. Multiple RHS solves using matrix of vectors is not exactly what I want because each subsequent RHS vector in my problem depends on the previous solve. Thanks again, Greg.&lt;BR /&gt;&lt;BR /&gt;(To clear this up, we want to call pardiso once with a phase of 12, then call it multiple times with a phase of 33 using a RHS vector which depends on the result of the previous pardiso call)&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
Greg,&lt;BR /&gt;&lt;BR /&gt;in the &lt;INSTALL dir=""&gt;mklexamplessolversource you'll find pardiso_sym_f.f file. Just make this working and you can easily try to factorize first and then call again many times phase = 33 with other B (rhs vector(s)).&lt;BR /&gt;&lt;BR /&gt;Say...&lt;BR /&gt;&lt;BR /&gt;!.. Factorization.&lt;BR /&gt; phase = 22 ! only factorization&lt;BR /&gt; CALL pardiso (pt, maxfct, mnum, mtype, phase, n, a, ia, ja, idum, nrhs, iparm, msglvl, ddum, ddum, error)&lt;BR /&gt; WRITE(*,*) 'Factorization completed ... '&lt;BR /&gt; IF (error .NE. 0) THEN&lt;BR /&gt; WRITE(*,*) 'The following ERROR was detected: ', error&lt;BR /&gt; STOP&lt;BR /&gt; ENDIF&lt;BR /&gt;!.. Back substitution and iterative refinement&lt;BR /&gt; iparm(8) = 2  ! max numbers of iterative refinement steps&lt;BR /&gt; phase = 33    ! Solve, iterative refinement&lt;BR /&gt; do i = 1, n&lt;BR /&gt; b(i) = 1.d0&lt;BR /&gt; end do&lt;BR /&gt; &lt;BR /&gt; CALL pardiso (pt, maxfct, mnum, mtype, phase, n, a, ia, ja, idum, nrhs, iparm, msglvl, b, x, error)&lt;BR /&gt; WRITE(*,*) 'Solve completed ... '&lt;BR /&gt; WRITE(*,*) 'The solution of the system is '&lt;BR /&gt;&lt;BR /&gt; DO i = 1, n&lt;BR /&gt; WRITE(*,*) ' x(',i,') = ', x(i)&lt;BR /&gt; END DO&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;! modify RHS&lt;BR /&gt; b =2.d0&lt;BR /&gt; x =0.d0&lt;BR /&gt;&lt;BR /&gt; CALL pardiso (pt, maxfct, mnum, mtype, phase, n, a, ia, ja, idum, nrhs, iparm, msglvl, b, x, error)&lt;BR /&gt; WRITE(*,*) 'Solve completed ... '&lt;BR /&gt; WRITE(*,*) 'The solution of the system is '&lt;BR /&gt;&lt;BR /&gt; DO i = 1, n&lt;BR /&gt; WRITE(*,*) ' x(',i,') = ', x(i)&lt;BR /&gt; END DO&lt;BR /&gt;&lt;BR /&gt;A.&lt;BR /&gt;&lt;/INSTALL&gt;</description>
      <pubDate>Fri, 24 Apr 2009 09:04:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852494#M6656</guid>
      <dc:creator>ArturGuzik</dc:creator>
      <dc:date>2009-04-24T09:04:55Z</dc:date>
    </item>
    <item>
      <title>Re: MKL Pardiso Factorize once for many solves</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852495#M6657</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/421782"&gt;greg.rowe&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;Can I use Pardiso to factorize the matrix once and then use that factorization to solve successive rhs vectors?&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
PARDISO can process several matrices with identical matrix sparsity pattern and is able to store the factors of these matrices at the same time. Please look at the desciption of inputparameters maxfct and mnum (second and third parameters in PARDISO calling sequence).&lt;BR /&gt;&lt;BR /&gt;The factors of matrices with different sparsity structures can be kept in memory with different memory address pointers pt.&lt;BR /&gt;&lt;BR /&gt;All the best&lt;BR /&gt;Sergey</description>
      <pubDate>Fri, 24 Apr 2009 09:17:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-Pardiso-Factorize-once-for-many-solves/m-p/852495#M6657</guid>
      <dc:creator>Sergey_K_Intel1</dc:creator>
      <dc:date>2009-04-24T09:17:13Z</dc:date>
    </item>
  </channel>
</rss>

