<?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 i Alex, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-DSS-for-Block-Structured-System/m-p/1151980#M27218</link>
    <description>&lt;P&gt;Hi Alex,&lt;/P&gt;

&lt;P&gt;Thank you for your reply. Yes, I would like to pay the cost of matrix factorization only once, and use it for both Block Jacobi and Block Gauss-Seidel operations afterward. This is indeed possible for any block-structured systems in general. For above simple example, BGS should be performed by the following steps:&lt;/P&gt;

&lt;P&gt;a)- solve block 1 for A11*y1=b1 ---&amp;gt;&amp;gt; y1=inv(A11)*b1&lt;/P&gt;

&lt;P&gt;b)- update the right-hand side vector for the next block of the&amp;nbsp;system:&amp;nbsp; b2up=b2-A21*y1&lt;/P&gt;

&lt;P&gt;c)- solve block 2 for A22*y2=b2up&amp;nbsp; ----&amp;gt; y2=inv(A22)* b2up&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;In a block Jacobi iteration, you would simply skip step b. &lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;This means for both operations, it is sufficient and enough if we factorize only the single&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 12px;"&gt;system AD=[A11, 0;&amp;nbsp;0, A22] representing the diagonal blocks of the original&amp;nbsp;system. By using the L and D info of AD, step a and step c can be done simply by appropriate indexing to an available content like this:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px;"&gt;a) - &lt;STRONG&gt;Get access&lt;/STRONG&gt; to the content of L and D from row=1 to&amp;nbsp; row=(size(A11)), then apply backward-forward substitution&amp;nbsp;to get y1=&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px;"&gt;inv(A11)*b1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P style="font-size: 13.008px;"&gt;&lt;SPAN style="font-size: 12px;"&gt;c) - &lt;STRONG&gt;Get access&lt;/STRONG&gt; to the content of L and D from row=size(A11)+1 to row=size(A11)+size(A22), then apply backward-forward&amp;nbsp;substitution&amp;nbsp;to get y2=&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px;"&gt;inv(A22)*b2up&lt;/SPAN&gt;&lt;/P&gt;

&lt;DIV&gt;The black-box nature of the PARDISO DSS does not allow to perform&amp;nbsp;step c, because unfortunately there is no support of getting access to L or at least a control to its manipulation at the backward-forward solve step. Is it going&amp;nbsp;to be a solution to this? Or is it possible&amp;nbsp;to command&lt;SPAN style="font-size: 12px;"&gt;&amp;nbsp;the backward-forward&amp;nbsp;substitution in DSS handle to some specific rows of the matrix?&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;Thanks for your comment.&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 04 Nov 2017 17:30:00 GMT</pubDate>
    <dc:creator>Precioso__Ali</dc:creator>
    <dc:date>2017-11-04T17:30:00Z</dc:date>
    <item>
      <title>PARDISO DSS for Block Structured System?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-DSS-for-Block-Structured-System/m-p/1151978#M27216</link>
      <description>&lt;P&gt;I am trying to figure out if PARDISO&amp;nbsp;DSS Interface can be used at the end to solve the following block structured system:&lt;/P&gt;

&lt;P&gt;[A11, A12;&amp;nbsp;&lt;SPAN style="font-size: 1em;"&gt;A21, A22]*[x1,x2]=[b1,b2]&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;where A11, A12, A21 and A22 are very large sparse matrices and the following Block Gauss-Seidel and Block-Jacobi solutions are needed at the same time :&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 13.008px;"&gt;BJ:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[A11, 0;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em;"&gt;0, A22]*[y1,y2]=[b1,b2]&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 13.008px;"&gt;BGS:&amp;nbsp; &amp;nbsp;[A11, 0;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em;"&gt;A21, A22]*[y1,y2]=[b1,b2]&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;For Block Jacobi,&amp;nbsp;&lt;SPAN style="font-size: 13.008px;"&gt;DSS Interface can be used to factorize the &lt;EM&gt;sparse representation &lt;/EM&gt;of the diagonal system&amp;nbsp;[A11, 0;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em;"&gt;0, A22], to be used&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px;"&gt;repeatedly afterward. However, how can I use the factorization data of the diagonal system&amp;nbsp;[A11, 0;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em;"&gt;0, A22] for my&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px;"&gt;Block Gauss-Seidel solution?&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em;"&gt;Unfortunately, the generated&amp;nbsp; DSS&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 12px;"&gt;handle is like a black-box, not allowing me to extract computed components from the routine. I need the factorization results to apply the backward-forward solutions partially, once at a time for the rows corresponding to each block, and then update the right-hand side vector accordingly for the BGS operation. Why there is no method to get the L component out of PARDISO routine, same as an already existing&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class="keyword" style="box-sizing: border-box; color: rgb(0, 113, 197); font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 13px; background-color: rgb(242, 242, 242);"&gt;&lt;A href="https://software.intel.com/node/4accf2bf-fefa-4a72-8aa8-a8d7badd3028" style="box-sizing: border-box; color: rgb(0, 113, 197); font-family: Arial, Tahoma, Helvetica, sans-serif; font-size: 13px; background-color: rgb(242, 242, 242);"&gt;pardiso_getdiag&lt;/A&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em;"&gt;for the diagonal component?&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em;"&gt;Any insight on this is appreciated.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 04 Nov 2017 15:34:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-DSS-for-Block-Structured-System/m-p/1151978#M27216</guid>
      <dc:creator>Precioso__Ali</dc:creator>
      <dc:date>2017-11-04T15:34:22Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-DSS-for-Block-Structured-System/m-p/1151979#M27217</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;L factors inside pardiso store in specific format and convert it in popular csr will significantly decrease performance. However i didn't catch you point - you want to apply same factorization for block Jacobi and Block Gauss-Zeidel, am i right? But in this case their 22 blocks are different, is not it?&lt;/P&gt;

&lt;P&gt;Thanks,&lt;/P&gt;

&lt;P&gt;Alex&lt;/P&gt;</description>
      <pubDate>Sat, 04 Nov 2017 15:47:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-DSS-for-Block-Structured-System/m-p/1151979#M27217</guid>
      <dc:creator>Alexander_K_Intel2</dc:creator>
      <dc:date>2017-11-04T15:47:48Z</dc:date>
    </item>
    <item>
      <title>i Alex,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-DSS-for-Block-Structured-System/m-p/1151980#M27218</link>
      <description>&lt;P&gt;Hi Alex,&lt;/P&gt;

&lt;P&gt;Thank you for your reply. Yes, I would like to pay the cost of matrix factorization only once, and use it for both Block Jacobi and Block Gauss-Seidel operations afterward. This is indeed possible for any block-structured systems in general. For above simple example, BGS should be performed by the following steps:&lt;/P&gt;

&lt;P&gt;a)- solve block 1 for A11*y1=b1 ---&amp;gt;&amp;gt; y1=inv(A11)*b1&lt;/P&gt;

&lt;P&gt;b)- update the right-hand side vector for the next block of the&amp;nbsp;system:&amp;nbsp; b2up=b2-A21*y1&lt;/P&gt;

&lt;P&gt;c)- solve block 2 for A22*y2=b2up&amp;nbsp; ----&amp;gt; y2=inv(A22)* b2up&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;In a block Jacobi iteration, you would simply skip step b. &lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;This means for both operations, it is sufficient and enough if we factorize only the single&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 12px;"&gt;system AD=[A11, 0;&amp;nbsp;0, A22] representing the diagonal blocks of the original&amp;nbsp;system. By using the L and D info of AD, step a and step c can be done simply by appropriate indexing to an available content like this:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px;"&gt;a) - &lt;STRONG&gt;Get access&lt;/STRONG&gt; to the content of L and D from row=1 to&amp;nbsp; row=(size(A11)), then apply backward-forward substitution&amp;nbsp;to get y1=&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px;"&gt;inv(A11)*b1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P style="font-size: 13.008px;"&gt;&lt;SPAN style="font-size: 12px;"&gt;c) - &lt;STRONG&gt;Get access&lt;/STRONG&gt; to the content of L and D from row=size(A11)+1 to row=size(A11)+size(A22), then apply backward-forward&amp;nbsp;substitution&amp;nbsp;to get y2=&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px;"&gt;inv(A22)*b2up&lt;/SPAN&gt;&lt;/P&gt;

&lt;DIV&gt;The black-box nature of the PARDISO DSS does not allow to perform&amp;nbsp;step c, because unfortunately there is no support of getting access to L or at least a control to its manipulation at the backward-forward solve step. Is it going&amp;nbsp;to be a solution to this? Or is it possible&amp;nbsp;to command&lt;SPAN style="font-size: 12px;"&gt;&amp;nbsp;the backward-forward&amp;nbsp;substitution in DSS handle to some specific rows of the matrix?&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;Thanks for your comment.&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 04 Nov 2017 17:30:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-DSS-for-Block-Structured-System/m-p/1151980#M27218</guid>
      <dc:creator>Precioso__Ali</dc:creator>
      <dc:date>2017-11-04T17:30:00Z</dc:date>
    </item>
  </channel>
</rss>

