<?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: direct-iterative method in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-direct-iterative-method/m-p/873755#M8728</link>
    <description>&lt;DIV align="justify"&gt;I have try to use the direct-iterative method (iparm(4)=31) to solve unsymmetric matrices coming out from our finite elements hydrodynamic model (SHYFEM model).&lt;BR /&gt;&lt;BR /&gt;The direct method (iparm(4)=0) works fine though it does not give good speedup passing from 1 to 2 threads.&lt;BR /&gt;&lt;BR /&gt;With iparm(4)=31 it is almost 2 times faster than with iparm(4)=0. Maybe because in this case it performs the analysis phase only the first time. The problem is that it works only if the non-zero elements of the matrix are constant.&lt;BR /&gt;&lt;BR /&gt;Some simulations have a different number of non-zero elements at each time steps, in this case the model stops at different time steps with different errors. For example running the same code many times I obtain randomly the following errors (iparm(20)):&lt;BR /&gt;-52; -16; -11; -42&lt;BR /&gt;at different random time steps.&lt;BR /&gt;&lt;BR /&gt;These are the solving procedures executed at each time step with the direct-iterative method:&lt;BR /&gt;- Assemble a coo matrix&lt;BR /&gt;- Convert into csr format (coocsr, routine of Sparskit)&lt;BR /&gt;- Clean non-zeros inside the band and sort the matrix (clncsr, routine of Sparskit)&lt;BR /&gt;- &lt;U&gt;Only the FIRST time step&lt;/U&gt;: Set and save iparm, pt. Run pardiso phase=11&lt;BR /&gt;- Run pardiso phase=23&lt;BR /&gt;&lt;BR /&gt;Notes:&lt;BR /&gt;There is no release of memory. METIS algorithm slows the execution.&lt;BR /&gt;Also with the direct-iterative method I don't have speedup passing from 1 to 2 threads.&lt;BR /&gt;The matrices have from 10,000 to 30,000 elements.&lt;BR /&gt;&lt;BR /&gt;Some questions:&lt;BR /&gt;- Is it possible to run the direct-iterative method in a more "stable" way? Or switch to the direct method if it fails? Maybe a release memory and a new analysis can be a solution if I could understand when the method will fail.&lt;BR /&gt;- Why I don't have speedup with two threads?&lt;BR /&gt;&lt;BR /&gt;Thank you,&lt;BR /&gt;Marco&lt;BR /&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 13 Jun 2008 14:28:12 GMT</pubDate>
    <dc:creator>marcob75</dc:creator>
    <dc:date>2008-06-13T14:28:12Z</dc:date>
    <item>
      <title>PARDISO: direct-iterative method</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-direct-iterative-method/m-p/873755#M8728</link>
      <description>&lt;DIV align="justify"&gt;I have try to use the direct-iterative method (iparm(4)=31) to solve unsymmetric matrices coming out from our finite elements hydrodynamic model (SHYFEM model).&lt;BR /&gt;&lt;BR /&gt;The direct method (iparm(4)=0) works fine though it does not give good speedup passing from 1 to 2 threads.&lt;BR /&gt;&lt;BR /&gt;With iparm(4)=31 it is almost 2 times faster than with iparm(4)=0. Maybe because in this case it performs the analysis phase only the first time. The problem is that it works only if the non-zero elements of the matrix are constant.&lt;BR /&gt;&lt;BR /&gt;Some simulations have a different number of non-zero elements at each time steps, in this case the model stops at different time steps with different errors. For example running the same code many times I obtain randomly the following errors (iparm(20)):&lt;BR /&gt;-52; -16; -11; -42&lt;BR /&gt;at different random time steps.&lt;BR /&gt;&lt;BR /&gt;These are the solving procedures executed at each time step with the direct-iterative method:&lt;BR /&gt;- Assemble a coo matrix&lt;BR /&gt;- Convert into csr format (coocsr, routine of Sparskit)&lt;BR /&gt;- Clean non-zeros inside the band and sort the matrix (clncsr, routine of Sparskit)&lt;BR /&gt;- &lt;U&gt;Only the FIRST time step&lt;/U&gt;: Set and save iparm, pt. Run pardiso phase=11&lt;BR /&gt;- Run pardiso phase=23&lt;BR /&gt;&lt;BR /&gt;Notes:&lt;BR /&gt;There is no release of memory. METIS algorithm slows the execution.&lt;BR /&gt;Also with the direct-iterative method I don't have speedup passing from 1 to 2 threads.&lt;BR /&gt;The matrices have from 10,000 to 30,000 elements.&lt;BR /&gt;&lt;BR /&gt;Some questions:&lt;BR /&gt;- Is it possible to run the direct-iterative method in a more "stable" way? Or switch to the direct method if it fails? Maybe a release memory and a new analysis can be a solution if I could understand when the method will fail.&lt;BR /&gt;- Why I don't have speedup with two threads?&lt;BR /&gt;&lt;BR /&gt;Thank you,&lt;BR /&gt;Marco&lt;BR /&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 13 Jun 2008 14:28:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-direct-iterative-method/m-p/873755#M8728</guid>
      <dc:creator>marcob75</dc:creator>
      <dc:date>2008-06-13T14:28:12Z</dc:date>
    </item>
  </channel>
</rss>

