<?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 PARDISO solve step performances and fill-in reducing in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-solve-step-performances-and-fill-in-reducing/m-p/1065553#M21902</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;In my problem, I have a constant SPD matrix to factorize (Cholesky / LL&lt;SUP&gt;T&lt;/SUP&gt;) and several thousands of solve to do. So I'm more concerned about solve performance since the ordering and factorize steps are done only one time.&lt;/P&gt;

&lt;P&gt;For example, I have a 4595x4595 matrix (MatrixMarket file attached to this message) with 58231 non-zeros values :&lt;/P&gt;

&lt;P&gt;&lt;IMG alt="Matrix A" src="http://i.imgur.com/1rMeugu.png" /&gt;&lt;/P&gt;

&lt;P&gt;When I use MKL PARDISO with fill-in reducing mode 0 (minimum degree method), 2500 solves are done in 4.59s with 251271 non-zeros in L matrix.&lt;/P&gt;

&lt;P&gt;When I use fill-in reducing mode 2 (METIS), 2500 solves are done in 4.95s with 241820 non-zeros in L matrix.&lt;/P&gt;

&lt;P&gt;I have tried Eigen 3 library with the same matrix, 2500 solves are done in 4.28s (unable to retrieve non-zeros count).&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I have two questions :&lt;/P&gt;

&lt;P&gt;1) Is it normal that the solve step is slower with METIS re-ordering while there is less non-zeros values in L matrix ?&lt;/P&gt;

&lt;P&gt;2) It seems that re-ordering step are not optimal with both MKL methods (for example SCILAB returns 223228 non-zeros). Is there a way to reduce fill-in other than iparm(2) ?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Factorization call :&lt;/SPAN&gt;&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;    void* pt = ...; //handle
    int maxfct=1;
    int mnum=1;
    int mtype=2;
    int phase=12;
    int n=4595;
    int nrhs=0;
    int msglvl=0;
    int error=-1;
    int* perm=NULL;
    double* a = ...; //values
    int* ia = ...; //rows
    int* ja = ...; //columns
	
    int iparm[] = {1,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    pardiso(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase, &amp;amp;n, a, ia, ja, NULL, &amp;amp;nrhs, iparm, &amp;amp;msglvl, NULL, NULL, &amp;amp;error);&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Thank you.&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 06 Sep 2016 09:36:34 GMT</pubDate>
    <dc:creator>Michael_M_20</dc:creator>
    <dc:date>2016-09-06T09:36:34Z</dc:date>
    <item>
      <title>PARDISO solve step performances and fill-in reducing</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-solve-step-performances-and-fill-in-reducing/m-p/1065553#M21902</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;In my problem, I have a constant SPD matrix to factorize (Cholesky / LL&lt;SUP&gt;T&lt;/SUP&gt;) and several thousands of solve to do. So I'm more concerned about solve performance since the ordering and factorize steps are done only one time.&lt;/P&gt;

&lt;P&gt;For example, I have a 4595x4595 matrix (MatrixMarket file attached to this message) with 58231 non-zeros values :&lt;/P&gt;

&lt;P&gt;&lt;IMG alt="Matrix A" src="http://i.imgur.com/1rMeugu.png" /&gt;&lt;/P&gt;

&lt;P&gt;When I use MKL PARDISO with fill-in reducing mode 0 (minimum degree method), 2500 solves are done in 4.59s with 251271 non-zeros in L matrix.&lt;/P&gt;

&lt;P&gt;When I use fill-in reducing mode 2 (METIS), 2500 solves are done in 4.95s with 241820 non-zeros in L matrix.&lt;/P&gt;

&lt;P&gt;I have tried Eigen 3 library with the same matrix, 2500 solves are done in 4.28s (unable to retrieve non-zeros count).&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I have two questions :&lt;/P&gt;

&lt;P&gt;1) Is it normal that the solve step is slower with METIS re-ordering while there is less non-zeros values in L matrix ?&lt;/P&gt;

&lt;P&gt;2) It seems that re-ordering step are not optimal with both MKL methods (for example SCILAB returns 223228 non-zeros). Is there a way to reduce fill-in other than iparm(2) ?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Factorization call :&lt;/SPAN&gt;&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;    void* pt = ...; //handle
    int maxfct=1;
    int mnum=1;
    int mtype=2;
    int phase=12;
    int n=4595;
    int nrhs=0;
    int msglvl=0;
    int error=-1;
    int* perm=NULL;
    double* a = ...; //values
    int* ia = ...; //rows
    int* ja = ...; //columns
	
    int iparm[] = {1,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    pardiso(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase, &amp;amp;n, a, ia, ja, NULL, &amp;amp;nrhs, iparm, &amp;amp;msglvl, NULL, NULL, &amp;amp;error);&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Thank you.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Sep 2016 09:36:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-solve-step-performances-and-fill-in-reducing/m-p/1065553#M21902</guid>
      <dc:creator>Michael_M_20</dc:creator>
      <dc:date>2016-09-06T09:36:34Z</dc:date>
    </item>
  </channel>
</rss>

