<?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 Inconsistent results using PARDISO... in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779905#M1371</link>
    <description>Have tried the memory alignment, which didn't seem to make a huge difference. I've also included the iterative refinement. I have a fairly tight tolerance on convergence for my timestepping, so I found that increasing to 10 iterative refinement steps seemed to give me more consistent results, still not exactly the same from run to run, or even the same for multiple solves of the same RHS, but they will suffice.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Thanks again for the help. If you have any other suggestions to get things to be more consistent then please let me know.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Cheers&lt;/DIV&gt;</description>
    <pubDate>Thu, 02 Aug 2012 11:21:59 GMT</pubDate>
    <dc:creator>RossK</dc:creator>
    <dc:date>2012-08-02T11:21:59Z</dc:date>
    <item>
      <title>Inconsistent results using PARDISO...</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779900#M1366</link>
      <description>&lt;DIV id="_mcePaste"&gt;Hi, I'm having a few issues getting consistent results when using PARDISO in parallel. I'm using MKL version 10.3 update 11 (32 bit).&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;I'm solving a symmetric indefinite system, so using mtype=-2. In general I've been using the default solver options via iparm(1)=0.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;Using these options, I'm getting a different solution, not only from run to run, but also on repeat solutions of the same factorization/RHS vector. The solutions seem to differ up to the first or second decimal place.. sometimes worse!&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;I've found that if I change the fill-in reducing ordering with iparm(2)=0, then I get more consistent results, but the solution still differs at the 10th decimal place or so. This isn't ideal for me.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;Further, if I set OMP_NUM_THREADS=1 (ie only using 1 processor), then I get completely consistent results every run. For any other number of threads, I get problems.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;My compile flags (for ifort) are:-O3 -xSSE4.1 -openmp -ipo -parallel -free&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;I've tried adding the compiler options: -fp-model precise -fp-model source, but they haven't made any noticable difference.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;I'm stumped - anyone have any suggestions? I've attached the matrix in sparse symmetric storage as well as the RHS vector.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;Cheers for any help!&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste" style="text-align: left;"&gt;EDIT: Have been searching a lot more after posting this and found that ill conditioning of the matrix and openmp reduction operations are to blame, and that the only way to expect bit for bit agreement is using sequential mode.&lt;BR /&gt;&lt;BR /&gt;However, these variations are still quite large for the example I gave. Would also be interested in why the METIS nested dissection gives such a different result to the minimum degree algorithm, which seems less sensitive to the problem. Would also be happy if someone points out a stupid error I've made!&lt;/DIV&gt;</description>
      <pubDate>Mon, 23 Jul 2012 18:23:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779900#M1366</guid>
      <dc:creator>RossK</dc:creator>
      <dc:date>2012-07-23T18:23:27Z</dc:date>
    </item>
    <item>
      <title>Inconsistent results using PARDISO...</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779901#M1367</link>
      <description>Hi, thanks for posting your question. I will take a look at your code sample and get back to you later. But at the same time, I'd like to point out that Intel MKL plans to provide conditional bitwise reproducibility in the 11.0 release. Please see this article for more information: &lt;A href="http://software.intel.com/en-us/articles/conditional-bitwise-reproducibility/" target="_blank"&gt;http://software.intel.com/en-us/articles/conditional-bitwise-reproducibility/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Besides ill conditioning of matrices and multithreading, another factor contributing to inconsistent results on the same system is memory alignment. It's strongly suggested you always align memory allocation to certain boundary (e.g. 64-byte). Please refer to an earlier related Knowledge Base article: &lt;A href="http://software.intel.com/en-us/articles/getting-reproducible-results-with-intel-mkl/" target="_blank"&gt;http://software.intel.com/en-us/articles/getting-reproducible-results-with-intel-mkl/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Thanks,&lt;BR /&gt;Zhang</description>
      <pubDate>Tue, 24 Jul 2012 00:00:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779901#M1367</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2012-07-24T00:00:21Z</dc:date>
    </item>
    <item>
      <title>Inconsistent results using PARDISO...</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779902#M1368</link>
      <description>Thanks for the reply. While I wait I'll read up on the memory alignment and keep an eye out for the 11.0 release. I'm assuming I just need to allocate memory using pointers and ptr = mkl_malloc(size,64) and free them using the mkl_free_buffers and mkl_free() rather than using the fortran allocate/deallocate?&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Cheers&lt;/DIV&gt;</description>
      <pubDate>Tue, 24 Jul 2012 14:34:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779902#M1368</guid>
      <dc:creator>RossK</dc:creator>
      <dc:date>2012-07-24T14:34:53Z</dc:date>
    </item>
    <item>
      <title>Inconsistent results using PARDISO...</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779903#M1369</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;I would suggest you to set a number of iterative refinement steps to anon-zero value.. say 3 or 4:&lt;BR /&gt;&lt;BR /&gt;iparm(8)=3&lt;BR /&gt;&lt;BR /&gt;With this settings I've got 1e-13 relative residual that should be more than enough.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Konstantin&lt;BR /&gt;</description>
      <pubDate>Wed, 01 Aug 2012 03:04:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779903#M1369</guid>
      <dc:creator>Konstantin_A_Intel</dc:creator>
      <dc:date>2012-08-01T03:04:07Z</dc:date>
    </item>
    <item>
      <title>Inconsistent results using PARDISO...</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779904#M1370</link>
      <description>Thanks to Konstantin for your help. &lt;BR /&gt;&lt;BR /&gt;Konstantin also clarified with me that because PARDISO does not support full pivoting,the precision of the factorization step depends on fill-in reordering. This is why PARDISO also includes an iterative refinement step (iparm(8)) to help with precision.&lt;BR /&gt;&lt;BR /&gt;Please let us know if you have further questions.&lt;BR /&gt;</description>
      <pubDate>Wed, 01 Aug 2012 17:03:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779904#M1370</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2012-08-01T17:03:40Z</dc:date>
    </item>
    <item>
      <title>Inconsistent results using PARDISO...</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779905#M1371</link>
      <description>Have tried the memory alignment, which didn't seem to make a huge difference. I've also included the iterative refinement. I have a fairly tight tolerance on convergence for my timestepping, so I found that increasing to 10 iterative refinement steps seemed to give me more consistent results, still not exactly the same from run to run, or even the same for multiple solves of the same RHS, but they will suffice.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Thanks again for the help. If you have any other suggestions to get things to be more consistent then please let me know.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Cheers&lt;/DIV&gt;</description>
      <pubDate>Thu, 02 Aug 2012 11:21:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Inconsistent-results-using-PARDISO/m-p/779905#M1371</guid>
      <dc:creator>RossK</dc:creator>
      <dc:date>2012-08-02T11:21:59Z</dc:date>
    </item>
  </channel>
</rss>

