<?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 Rank-1 update to LU matrices in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075002#M22512</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;I have a matrix Y for which I need LU factors that I can get using DSS interface Routines like dss_factor_complex. However, the diagonal entries of this matrix need to be updated after each iteration of a loop that gets me LU factors.&lt;/P&gt;

&lt;P&gt;Since Y is very large, and LU factorization will take a lot of computational effort. Is there a way to update LU factors when Y updates without having to do LU factorization on every iteration?&lt;/P&gt;

&lt;P&gt;I am trying to do this:&lt;/P&gt;

&lt;P&gt;iteration1: Y (original) &amp;gt; reorder &amp;gt; factor (LU)&amp;gt; solve&lt;/P&gt;

&lt;P&gt;iteration2: Y' (updated) &amp;gt; update LU (from iteration1) &amp;gt; solve&lt;/P&gt;

&lt;P&gt;Iteration3: Y"(updated) &amp;gt; update LU (from iteration2) &amp;gt; solve&lt;/P&gt;

&lt;P&gt;Thanks.&lt;/P&gt;

&lt;P&gt;Sunny&lt;/P&gt;</description>
    <pubDate>Thu, 19 Nov 2015 01:41:47 GMT</pubDate>
    <dc:creator>Sunny_S_1</dc:creator>
    <dc:date>2015-11-19T01:41:47Z</dc:date>
    <item>
      <title>Rank-1 update to LU matrices</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075002#M22512</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;I have a matrix Y for which I need LU factors that I can get using DSS interface Routines like dss_factor_complex. However, the diagonal entries of this matrix need to be updated after each iteration of a loop that gets me LU factors.&lt;/P&gt;

&lt;P&gt;Since Y is very large, and LU factorization will take a lot of computational effort. Is there a way to update LU factors when Y updates without having to do LU factorization on every iteration?&lt;/P&gt;

&lt;P&gt;I am trying to do this:&lt;/P&gt;

&lt;P&gt;iteration1: Y (original) &amp;gt; reorder &amp;gt; factor (LU)&amp;gt; solve&lt;/P&gt;

&lt;P&gt;iteration2: Y' (updated) &amp;gt; update LU (from iteration1) &amp;gt; solve&lt;/P&gt;

&lt;P&gt;Iteration3: Y"(updated) &amp;gt; update LU (from iteration2) &amp;gt; solve&lt;/P&gt;

&lt;P&gt;Thanks.&lt;/P&gt;

&lt;P&gt;Sunny&lt;/P&gt;</description>
      <pubDate>Thu, 19 Nov 2015 01:41:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075002#M22512</guid>
      <dc:creator>Sunny_S_1</dc:creator>
      <dc:date>2015-11-19T01:41:47Z</dc:date>
    </item>
    <item>
      <title>sunny, that's not possible</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075003#M22513</link>
      <description>&lt;P&gt;sunny, that's not possible with DSS API. Please have a look at the PARDISO API - iparm(4) -&amp;nbsp;&lt;SPAN style="color: rgb(51, 51, 51); font-family: 'Intel Clear', Verdana, Arial, sans-serif; font-size: 13.3333px; line-height: 16px;"&gt;Preconditioned CGS/CG. &amp;nbsp;Based on your explanation above, it should helps. &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 19 Nov 2015 12:10:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075003#M22513</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2015-11-19T12:10:35Z</dc:date>
    </item>
    <item>
      <title>Thanks Gennady for your</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075004#M22514</link>
      <description>&lt;P&gt;Thanks Gennady for your answer.&lt;/P&gt;

&lt;P&gt;I tried your recommendation with my code, but ran into another problem. I am trying to follow an example in the compiler folder named "pardiso_unsym_complexf.f" very closely. However, when I call pardiso, I am getting an ERROR = -1 suggesting an inconsistent input. But I checked that my arguments were consistent with PARDISO_DC.&lt;/P&gt;

&lt;P&gt;Note that I have a complex matrix (A) that I am trying to factorise. To help you give a context, I am providing an excerpt from my code:&lt;/P&gt;

&lt;P&gt;Declaration:&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;EM&gt; !DOUBLE PRECISION&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER, PARAMETER :: DP = 8&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; !INTERNAL SOLVER MEMORY POINTER&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPE(MKL_PARDISO_HANDLE), ALLOCATABLE :: PT(:)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; !OTHER PARADISO VARIABLES&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER MAXFCT, MNUM, MTYPE, PHASE, N, NRHS, ERROR, MSGLVL, NNZ&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER ERROR1&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER, ALLOCATABLE :: IPARM(:)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER, ALLOCATABLE :: IA(:)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER, ALLOCATABLE :: JA(:)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; COMPLEX(KIND=DP), ALLOCATABLE :: A( : )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; COMPLEX(KIND=DP), ALLOCATABLE :: B( : )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; COMPLEX(KIND=DP), ALLOCATABLE :: X( : )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER II, JJ, NI, IIA, KEY, IDUM(1), IBUS, ISQBUS, KSQBUS, SIZEYDIAG, SIZEYOFF&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; COMPLEX(KIND=DP) :: DDUM(1)&lt;/EM&gt;&lt;/P&gt;

&lt;P&gt;Parameters:&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;EM&gt; IPARM(1) = 1 ! no solver default&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(2) = 2 ! fill-in reordering from METIS&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; iparm(3) = 1 ! numbers of processors, value of OMP_NUM_THREADS&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (IMODE == 0) THEN&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(4) = 60 ! no iterative-direct algorithm - first pass 0 (60); second onwards 2 (62)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(4) = 62&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ENDIF&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(5) = 0 ! no user fill-in reducing permutation&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(6) = 0 ! =0 solution on the first n compoments of x&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(8) = 9 ! numbers of iterative refinement steps&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(10) = 13 ! perturbe the pivot elements with 1E-13&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(11) = 1 ! use nonsymmetric permutation and scaling MPS&lt;BR /&gt;
	!&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(13) = 0 ! maximum weighted matching algorithm is switched-off (default for symmetric). Try iparm(13) = 1 in case of inappropriate accuracy&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; iparm(13) = 1 ! maximum weighted matching algorithm is switched-on (default for non-symmetric).&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(14) = 0 ! Output: number of perturbed pivots&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(18) = -1 ! Output: number of nonzeros in the factor LU&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(19) = -1 ! Output: Mflops for LU factorization&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPARM(20) = -1 ! Output: Numbers of CG Iterations (-1)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ERROR = 0 ! INTIALISE ERROR FLAG&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MSGLVL = 1 !PRINT STATISTICAL INFORMATION&lt;BR /&gt;
	!&amp;nbsp;&amp;nbsp;&amp;nbsp; MTYPE = 6 !COMPLEX, SYMMETRIC&lt;BR /&gt;
	!&amp;nbsp;&amp;nbsp;&amp;nbsp; MTYPE = 3 !COMPLEX, STRUCTURALLY SYMMETRIC&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; mtype&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! complex unsymmetric matrix&lt;/EM&gt;&lt;/P&gt;

&lt;P&gt;Finally, the call:&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;EM&gt; !INITIALIZE THE INTERNAL SOLVER MEMORY POINTER - ONLY NECESSARY FOR THE FIRST CALL OF THE PARDISO SOLVER&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ALLOCATE(PT(64))&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; DO II = 1, 64&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PT(II)%DUMMY = 0&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; END DO&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; !REORDER AND SYMBOLIC FACTORISATION&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; PHASE = 11&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL PARDISO(PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, IDUM, NRHS, IPARM, MSGLVL, DDUM, DDUM, ERROR)&lt;/EM&gt;&lt;/P&gt;

&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Tue, 01 Dec 2015 01:16:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075004#M22514</guid>
      <dc:creator>Sunny_S_1</dc:creator>
      <dc:date>2015-12-01T01:16:41Z</dc:date>
    </item>
    <item>
      <title>please add matrix checker -</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075005#M22515</link>
      <description>&lt;P&gt;please add matrix checker - iparm(27) = 1 and see the message you will get&lt;/P&gt;</description>
      <pubDate>Tue, 01 Dec 2015 04:07:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075005#M22515</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2015-12-01T04:07:59Z</dc:date>
    </item>
    <item>
      <title>I have also check how works</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075006#M22516</link>
      <description>&lt;P&gt;I have also check how works the original test you mentioned -&amp;nbsp;pardiso_unsym_complex_f&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;It works fine on my side. here is the output I see:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;pardiso_unsym_complex_f.exe&lt;/P&gt;

&lt;P&gt;=== PARDISO: solving a complex nonsymetric system ===&lt;BR /&gt;
	1-based array indexing is turned ON&lt;BR /&gt;
	PARDISO double precision computation is turned ON&lt;BR /&gt;
	METIS algorithm at reorder step is turned ON&lt;BR /&gt;
	Scaling is turned ON&lt;BR /&gt;
	Matching is turned ON&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	Summary: ( reordering phase )&lt;BR /&gt;
	================&lt;/P&gt;

&lt;P&gt;Times:&lt;BR /&gt;
	======&lt;BR /&gt;
	Time spent in calculations of symmetric matrix portrait (fulladj): 0.000012 s&lt;BR /&gt;
	Time spent in reordering of the initial matrix (reorder) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 0.000144 s&lt;BR /&gt;
	Time spent in symbolic factorization (symbfct) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 0.000301 s&lt;BR /&gt;
	Time spent in data preparations for factorization (parlist) &amp;nbsp; &amp;nbsp; &amp;nbsp;: 0.000001 s&lt;BR /&gt;
	Time spent in allocation of internal data structures (malloc) &amp;nbsp; &amp;nbsp;: 0.007281 s&lt;BR /&gt;
	Time spent in additional calculations &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 0.000039 s&lt;BR /&gt;
	Total time spent &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 0.007778 s&lt;/P&gt;

&lt;P&gt;.....................&lt;/P&gt;

&lt;P&gt;.....................&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;Solve completed ...&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;The solution of the system is&lt;BR /&gt;
	&amp;nbsp; x( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 ) = &amp;nbsp;(0.174767984570877,2.117724204435874E-002)&lt;BR /&gt;
	&amp;nbsp; x( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 ) = &amp;nbsp;(-0.176470588235294,-0.294117647058824)&lt;BR /&gt;
	&amp;nbsp; x( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3 ) = &amp;nbsp;(4.932176149148183E-002,2.959819993571200E-002)&lt;BR /&gt;
	&amp;nbsp; x( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4 ) = &amp;nbsp;(4.298112687698030E-002,-3.140928502548559E-002)&lt;BR /&gt;
	&amp;nbsp; x( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5 ) = &amp;nbsp;(-0.120858887817422,-0.170859530697525)&lt;BR /&gt;
	&amp;nbsp; x( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6 ) = &amp;nbsp;(-0.369347476695596,-8.614593378335146E-004)&lt;BR /&gt;
	&amp;nbsp; x( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7 ) = &amp;nbsp;(9.161041465766635E-002,0.125361620057859)&lt;BR /&gt;
	&amp;nbsp; x( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8 ) = &amp;nbsp;(0.223940855030537,0.139427836708454)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Dec 2015 04:16:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075006#M22516</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2015-12-01T04:16:33Z</dc:date>
    </item>
    <item>
      <title>Thanks Gennady. My ja was not</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075007#M22517</link>
      <description>&lt;P&gt;Thanks Gennady. My ja was not ordered in ascending order. I fixed it and now my code works.&lt;/P&gt;

&lt;P&gt;Thanks again.&lt;/P&gt;</description>
      <pubDate>Tue, 08 Dec 2015 18:11:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Rank-1-update-to-LU-matrices/m-p/1075007#M22517</guid>
      <dc:creator>Sunny_S_1</dc:creator>
      <dc:date>2015-12-08T18:11:14Z</dc:date>
    </item>
  </channel>
</rss>

