<?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>Thema "pardiso_schur.c with MKL_PARDISO, time consumption" in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342405#M32404</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I&amp;nbsp;&lt;SPAN&gt;met an issue when using the pardiso_schur.c&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;I use&amp;nbsp;oneAPI 2021.04 release.&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;/opt/intel/oneapi/mkl/latest/examples/c/sparse_directsolvers/source/pardiso_schur.c&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;for a large&amp;nbsp;&lt;SPAN&gt;matrix&amp;nbsp;A = I, with 80000*80000 size and n_schur is&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;1400.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;&lt;SPAN style="font-family: inherit;"&gt;The time show in "&lt;SPAN&gt;Message level information" is different with&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;std&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;::&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;chrono, the code like this:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;auto t0 = std::chrono::steady_clock::now();
pardiso (pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,
         &amp;amp;n, a, ia, ja, perm, &amp;amp;nrhs, iparm, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);
if ( error != 0 )
{
     printf ("\nERROR during symbolic factorization: " IFORMAT, error);
     exit (1);
}
auto t1 = std::chrono::steady_clock::now();
std::cout &amp;lt;&amp;lt; "t1-t0 = " &amp;lt;&amp;lt; std::chrono::duration_cast&amp;lt;std::chrono::duration&amp;lt;double&amp;gt;&amp;gt;(t1 - t0).count() * 1e3 &amp;lt;&amp;lt; "ms   , PARDISO(phase11, symbolic factorization)" &amp;lt;&amp;lt; std::endl;&lt;/LI-CODE&gt;
&lt;P&gt;and the result is:&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Times:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;======&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Time spent in calculations of symmetric matrix portrait (fulladj): &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;001536&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Time spent in reordering of the initial matrix (reorder) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;000077&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&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; : &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;006114&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Time spent in data preparations for factorization (parlist) &amp;nbsp; &amp;nbsp; &amp;nbsp;: &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;000451&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Time spent in allocation of internal data structures (malloc) &amp;nbsp; &amp;nbsp;: &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;003068&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&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;: &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;002148&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&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; : &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;013394&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;t1-t0 = &lt;/SPAN&gt;&lt;SPAN&gt;34&lt;/SPAN&gt;&lt;SPAN&gt;.072ms &amp;nbsp; , PARDISO(phase11, symbolic factorization)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;It's about 2x between "t1-t0" and&amp;nbsp;"Total time spent".&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;a href="https://community.intel.com/t5/user/viewprofilepage/user-id/111125"&gt;@Kirill_V_Intel&lt;/a&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P class="sub_section_element_selectors"&gt;I am an employee of Intel, ping me directly if any need.&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;Thanks so much!&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Wed, 08 Dec 2021 09:03:14 GMT</pubDate>
    <dc:creator>Qigeng</dc:creator>
    <dc:date>2021-12-08T09:03:14Z</dc:date>
    <item>
      <title>pardiso_schur.c with MKL_PARDISO, time consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342405#M32404</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I&amp;nbsp;&lt;SPAN&gt;met an issue when using the pardiso_schur.c&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;I use&amp;nbsp;oneAPI 2021.04 release.&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;/opt/intel/oneapi/mkl/latest/examples/c/sparse_directsolvers/source/pardiso_schur.c&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;for a large&amp;nbsp;&lt;SPAN&gt;matrix&amp;nbsp;A = I, with 80000*80000 size and n_schur is&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;1400.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;&lt;SPAN style="font-family: inherit;"&gt;The time show in "&lt;SPAN&gt;Message level information" is different with&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;std&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;::&lt;/SPAN&gt;&lt;SPAN style="font-family: inherit;"&gt;chrono, the code like this:&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;auto t0 = std::chrono::steady_clock::now();
pardiso (pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,
         &amp;amp;n, a, ia, ja, perm, &amp;amp;nrhs, iparm, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);
if ( error != 0 )
{
     printf ("\nERROR during symbolic factorization: " IFORMAT, error);
     exit (1);
}
auto t1 = std::chrono::steady_clock::now();
std::cout &amp;lt;&amp;lt; "t1-t0 = " &amp;lt;&amp;lt; std::chrono::duration_cast&amp;lt;std::chrono::duration&amp;lt;double&amp;gt;&amp;gt;(t1 - t0).count() * 1e3 &amp;lt;&amp;lt; "ms   , PARDISO(phase11, symbolic factorization)" &amp;lt;&amp;lt; std::endl;&lt;/LI-CODE&gt;
&lt;P&gt;and the result is:&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Times:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;======&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Time spent in calculations of symmetric matrix portrait (fulladj): &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;001536&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Time spent in reordering of the initial matrix (reorder) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;000077&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&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; : &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;006114&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Time spent in data preparations for factorization (parlist) &amp;nbsp; &amp;nbsp; &amp;nbsp;: &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;000451&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Time spent in allocation of internal data structures (malloc) &amp;nbsp; &amp;nbsp;: &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;003068&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&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;: &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;002148&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&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; : &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;013394&lt;/SPAN&gt;&lt;SPAN&gt; s&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;t1-t0 = &lt;/SPAN&gt;&lt;SPAN&gt;34&lt;/SPAN&gt;&lt;SPAN&gt;.072ms &amp;nbsp; , PARDISO(phase11, symbolic factorization)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;It's about 2x between "t1-t0" and&amp;nbsp;"Total time spent".&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;a href="https://community.intel.com/t5/user/viewprofilepage/user-id/111125"&gt;@Kirill_V_Intel&lt;/a&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P class="sub_section_element_selectors"&gt;I am an employee of Intel, ping me directly if any need.&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;Thanks so much!&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Wed, 08 Dec 2021 09:03:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342405#M32404</guid>
      <dc:creator>Qigeng</dc:creator>
      <dc:date>2021-12-08T09:03:14Z</dc:date>
    </item>
    <item>
      <title>Re: pardiso_schur.c with MKL_PARDISO, time consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342506#M32410</link>
      <description>&lt;P&gt;I try to make a loop of 4 times to call phase11, and find that:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;1. for &lt;/SPAN&gt;&lt;SPAN class="sub_section_element_selectors"&gt;matrix&amp;nbsp;A = I (identity matrix), with 80000*80000 size and n_schur is&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class="sub_section_element_selectors"&gt;1400. When the first time to call phase11, there is about&amp;nbsp;&lt;SPAN&gt;2x between "t1-t0" and&amp;nbsp;"Total time spent". But for the rest, the&amp;nbsp;"t1-t0" and&amp;nbsp;"Total time spent" is equal.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;2.However, for other matrix which is more complex than identity matrix, which means that nnz of matrix is more than&amp;nbsp;&lt;SPAN&gt;80000, no matter which time in the loop, the&amp;nbsp;&lt;SPAN class="sub_section_element_selectors"&gt;"t1-t0" is about 2x&amp;nbsp;&amp;nbsp;"Total time spent".&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN class="sub_section_element_selectors"&gt;I think that PARDISO function maybe has a saving logic? when first time call phase11, structure of matrix will be saved, so for the rest times, the time consumption will be less; but for large matrix, the space for saving is not enough. As a result, every time, the&amp;nbsp;structure of matrix will be established once.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN class="sub_section_element_selectors"&gt;This is only my guess. If it is not correct, please tell me.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN class="sub_section_element_selectors"&gt;Thanks&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Dec 2021 15:05:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342506#M32410</guid>
      <dc:creator>Qigeng</dc:creator>
      <dc:date>2021-12-08T15:05:34Z</dc:date>
    </item>
    <item>
      <title>Re:pardiso_schur.c with MKL_PARDISO, time consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342772#M32417</link>
      <description>&lt;P&gt;Zhang, &lt;/P&gt;&lt;P&gt;it could be some kind of overhead problem. We reproduced the problem and will investigate the cause of this behavior. This thread will be updated with the results of this investigation. &lt;/P&gt;&lt;P&gt;-Gennady&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Thu, 09 Dec 2021 10:24:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342772#M32417</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2021-12-09T10:24:16Z</dc:date>
    </item>
    <item>
      <title>Re: Re:pardiso_schur.c with MKL_PARDISO, time consumption</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342978#M32423</link>
      <description>&lt;P&gt;Get it!&lt;/P&gt;
&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Dec 2021 00:21:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-schur-c-with-MKL-PARDISO-time-consumption/m-p/1342978#M32423</guid>
      <dc:creator>Qigeng</dc:creator>
      <dc:date>2021-12-10T00:21:16Z</dc:date>
    </item>
  </channel>
</rss>

