<?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 Re: How to determine the pivoting perturbation value (iparm[9]) in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1696785#M37206</link>
    <description>&lt;P&gt;Hi, Kwangok:&lt;/P&gt;
&lt;P&gt;Would you please provide your full compilable and runnable test code example, and your computation environment details?&lt;/P&gt;
&lt;P&gt;The default value is not one size fits all, so you are definitely right that performance varies. By the minimum, you can trial and error several values of&amp;nbsp;&lt;SPAN&gt;iparm[9] to pick the one you like the best.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Shiquan Su&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 12 Jun 2025 22:33:54 GMT</pubDate>
    <dc:creator>Shiquan_Su</dc:creator>
    <dc:date>2025-06-12T22:33:54Z</dc:date>
    <item>
      <title>How to determine the pivoting perturbation value (iparm[9])</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1696141#M37200</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;The manual says that the default value for nonsymmetric matrices is iparm[9] = 13.&lt;/P&gt;&lt;P&gt;However, in my experience, in some cases, performance can be improved by not using the default values.&amp;nbsp;It also seems to affect not only performance, but also the accuracy of the solution.&amp;nbsp;&lt;/P&gt;&lt;P&gt;It seems that the optimal value varies depending on the condition of the matrix. Are there any factors or guidelines to determine this value?&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Kwangok&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jun 2025 14:23:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1696141#M37200</guid>
      <dc:creator>kwjung</dc:creator>
      <dc:date>2025-06-10T14:23:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to determine the pivoting perturbation value (iparm[9])</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1696785#M37206</link>
      <description>&lt;P&gt;Hi, Kwangok:&lt;/P&gt;
&lt;P&gt;Would you please provide your full compilable and runnable test code example, and your computation environment details?&lt;/P&gt;
&lt;P&gt;The default value is not one size fits all, so you are definitely right that performance varies. By the minimum, you can trial and error several values of&amp;nbsp;&lt;SPAN&gt;iparm[9] to pick the one you like the best.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Shiquan Su&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Jun 2025 22:33:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1696785#M37206</guid>
      <dc:creator>Shiquan_Su</dc:creator>
      <dc:date>2025-06-12T22:33:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to determine the pivoting perturbation value (iparm[9])</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1697361#M37216</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;SPAN&gt;Shiquan,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I want to automatically set the optimised parameter based on the matrix condition.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I'm just wondering which factors can affect it.&amp;nbsp;Probably the size of the matrix, nnz, value, etc. can affect it.&amp;nbsp;Any idea what values might be hints?&amp;nbsp;I'm testing this in our own code and will write the test code if needed.&lt;/P&gt;</description>
      <pubDate>Mon, 16 Jun 2025 02:19:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1697361#M37216</guid>
      <dc:creator>kwjung</dc:creator>
      <dc:date>2025-06-16T02:19:30Z</dc:date>
    </item>
    <item>
      <title>Re: How to determine the pivoting perturbation value (iparm[9])</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1697394#M37218</link>
      <description>&lt;P&gt;Hi, there was a post on that topic &lt;A href="https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-is-random-and-inaccurate/td-p/1654446" target="_blank"&gt;https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/pardiso-is-random-and-inaccurate/td-p/1654446&lt;/A&gt;. I did not really investigate the dependency between iparm[9] value and condition number of the problem. There might be some correlation, but I do not think it can be useful in practical implementation of getting a general linear system solved. You can dig it further and check some publications on tips how to make static pivoting work, but what I do is just try iparm[9] = 5, 7, 9, 11, 13, 15 and choose the value with smallest relative residual. If you need to solve matrices with similar properties, some value of iparm[9] may work fine for all of them after you tune it once, but when they have different properties, I do not know the way to choose the best one without brute force for now. You may also try specifying your own procedure for handling pivots.&lt;BR /&gt;Anyway, I prefer direct solvers with dynamic pivoting for factorizing indefinite and unsymmetric matrices. They typically produce more precise solution for ill-conditioned systems when you specify threshold like 1e-2 or 1e-3 and solution process (choosing solver parameters) can be automated. You may get additional memory because of dynamic pivoting and solver may break, but then you can just restart factorization with increased allocation constant, say, by a factor of 1.5. If you did not obtain the solution with small enough relative residual, you can keep increasing pivoting threshold up to 1e+0. Note that some linear systems have limit on how small relative residual you can achieve due to their condition number. Say, there was a system that had an SPD matrix, but I was not able to solve it with residual smaller than 1e-4. So if you get relative residual greater or equal to 1e+0 or about 1e-1 or 1e-2, that typically means the precision is poor, but 1e-3 may already be fine (depends on how much precision you want in the solution).&lt;/P&gt;</description>
      <pubDate>Mon, 16 Jun 2025 04:19:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/How-to-determine-the-pivoting-perturbation-value-iparm-9/m-p/1697394#M37218</guid>
      <dc:creator>morskaya_svinka_1</dc:creator>
      <dc:date>2025-06-16T04:19:50Z</dc:date>
    </item>
  </channel>
</rss>

