<?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 with METIS is not thread safe in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1428816#M33846</link>
    <description>&lt;P&gt;So I recently realized that the setup phase of PARDISO is not thread safe when using the METIS reordering... This is incredibly annoying and not documented anywhere as far as I can tell. I'm going to guess that it has something to do with the random number generator in METIS, which doesn't seem to be thread safe (&lt;A href="http://glaros.dtc.umn.edu/gkhome/node/904" target="_blank"&gt;http://glaros.dtc.umn.edu/gkhome/node/904&lt;/A&gt;)...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you have any plans to fix this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Aron&lt;/P&gt;</description>
    <pubDate>Wed, 09 Nov 2022 16:59:54 GMT</pubDate>
    <dc:creator>arona</dc:creator>
    <dc:date>2022-11-09T16:59:54Z</dc:date>
    <item>
      <title>PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1428816#M33846</link>
      <description>&lt;P&gt;So I recently realized that the setup phase of PARDISO is not thread safe when using the METIS reordering... This is incredibly annoying and not documented anywhere as far as I can tell. I'm going to guess that it has something to do with the random number generator in METIS, which doesn't seem to be thread safe (&lt;A href="http://glaros.dtc.umn.edu/gkhome/node/904" target="_blank"&gt;http://glaros.dtc.umn.edu/gkhome/node/904&lt;/A&gt;)...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you have any plans to fix this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Aron&lt;/P&gt;</description>
      <pubDate>Wed, 09 Nov 2022 16:59:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1428816#M33846</guid>
      <dc:creator>arona</dc:creator>
      <dc:date>2022-11-09T16:59:54Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1429963#M33858</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Thanks for reaching out to us.&lt;/P&gt;&lt;P&gt;We are working on this issue. we will get back to you soon.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 14 Nov 2022 15:42:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1429963#M33858</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-11-14T15:42:00Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1432086#M33898</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Thanks for your patience.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Here are few things need to be considered while calling pardiso from parallel region&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;1)Calling PARDISO from parallel region with multiple handles "pt". Each thread has its own handle "pt" and its own single right hand side "b".&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;This is the correct way.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;2)Calling PARDISO from parallel region, supplying each thread with one right hand side and the same handle.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;This is incorrect usage. each thread each has its own handle "pt" and its own single right&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;3)Calling PARDISO from sequential code with multiple right hand sides. This uses internal PARDISO parallelization.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;This is a correct usage.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;4)Calling PARDISO from parallel region with the same multiple right hand sides.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;This is incorrect usage.&amp;nbsp;The same output can not shared for different threads, which is a data race in the use of output.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Here is the thread link with similar discussion which might hlep you&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Pardiso-not-thread-safe/td-p/793007" target="_blank"&gt;https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Pardiso-not-thread-safe/td-p/793007&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Please do let us know if the above information helps in answering the query. &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Tue, 22 Nov 2022 09:03:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1432086#M33898</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-11-22T09:03:26Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1434382#M33933</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;As we haven't heard back from you, could you please provide us with an update regarding this issue? Please do let us know if you have any queries here in this case.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 30 Nov 2022 11:46:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1434382#M33933</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-11-30T11:46:43Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1434472#M33935</link>
      <description>&lt;P&gt;Vidya,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your answer doesn't address the issue. I am calling PARDISO with each thread having its own handle - it is still not thread safe (results are different from run-to-run). This is only an issue when using METIS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There also doesn't seem to be any way to copy a handle after the symbolic factorization is done - this is also annoying since each thread needs to do the exact same symbolic factorization when solving multiple systems with the same sparsity structure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Aron&lt;/P&gt;</description>
      <pubDate>Wed, 30 Nov 2022 17:03:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1434472#M33935</guid>
      <dc:creator>arona</dc:creator>
      <dc:date>2022-11-30T17:03:27Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1435663#M33954</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Could you please provide us with a sample reproducer (&amp;amp; steps to reproduce the issue if any) and the results that you are getting along with the expected results?&lt;/P&gt;&lt;P&gt;Also please do let us know the MKL version being used and OS details so that we can test it from our end&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 05 Dec 2022 06:41:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1435663#M33954</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-12-05T06:41:13Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1437650#M33983</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;As we haven't heard back from you, could you please provide us with an update regarding the issue?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 12 Dec 2022 08:42:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1437650#M33983</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-12-12T08:42:30Z</dc:date>
    </item>
    <item>
      <title>Re: Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1437785#M33990</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;SPAN&gt;Vidyalatha,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code below demonstrates the issue (I could find any sane way of pasting code on here, and the forum doesn't allow me to attach files):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;---&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;#include &amp;lt;mkl.h&amp;gt;&lt;BR /&gt;#include &amp;lt;tbb/tbb.h&amp;gt;&lt;BR /&gt;#include &amp;lt;vector&amp;gt;&lt;BR /&gt;#include &amp;lt;assert.h&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;int main() {&lt;/P&gt;
&lt;P&gt;static const int n = 64;&lt;BR /&gt;static const int N = n * n;&lt;BR /&gt;static const int nrep = 1000;&lt;/P&gt;
&lt;P&gt;std::vector&amp;lt;int&amp;gt; ia;&lt;BR /&gt;std::vector&amp;lt;int&amp;gt; ja;&lt;BR /&gt;std::vector&amp;lt;double&amp;gt; val;&lt;/P&gt;
&lt;P&gt;//simple example nontrivial matrix&lt;/P&gt;
&lt;P&gt;ia.push_back(0);&lt;/P&gt;
&lt;P&gt;for (int i = 0; i &amp;lt; n; i++) {&lt;BR /&gt;for (int j = 0; j &amp;lt; n; j++) {&lt;/P&gt;
&lt;P&gt;int id = j + i * n;&lt;BR /&gt;#if 0&lt;BR /&gt;if (i &amp;gt; 0) {&lt;BR /&gt;ja.push_back(id - n);&lt;BR /&gt;val.push_back(-1);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;if (j &amp;gt; 0) {&lt;BR /&gt;ja.push_back(id - 1);&lt;BR /&gt;val.push_back(-1);&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;BR /&gt;ja.push_back(id);&lt;BR /&gt;val.push_back(4);&lt;BR /&gt;#if 1&lt;BR /&gt;if (j &amp;lt; n - 1) {&lt;BR /&gt;ja.push_back(id + 1);&lt;BR /&gt;val.push_back(-1);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;if (i &amp;lt; n - 1) {&lt;BR /&gt;ja.push_back(id + n);&lt;BR /&gt;val.push_back(-1);&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;BR /&gt;ia.push_back(int(ja.size()));&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;#if 0&lt;BR /&gt;for (int i = 0; i &amp;lt; N; i++) {&lt;BR /&gt;for (int j = ia[i]; j &amp;lt; ia[i + 1]; j++) {&lt;BR /&gt;int nb = ja[j];&lt;BR /&gt;double v = val[j];&lt;BR /&gt;bool t = false;&lt;BR /&gt;for (int k = ia[nb]; k &amp;lt; ia[nb + 1]; k++) {&lt;BR /&gt;if (ja[k] == i &amp;amp;&amp;amp; v == val[k]) {&lt;BR /&gt;t = true;&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;if (!t) {&lt;BR /&gt;fprintf(stderr, "matrix not symmetric\n");&lt;BR /&gt;abort();&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;BR /&gt;MKL_INT mtype = 6; /* Real unsymmetric matrix */&lt;BR /&gt;/* RHS and solution vectors. */&lt;BR /&gt;double b[5], x[5];&lt;BR /&gt;MKL_INT nrhs = 1; /* Number of right hand sides. */&lt;BR /&gt;/* Internal solver memory pointer pt, */&lt;BR /&gt;/* 32-bit: int pt[64]; 64-bit: long int pt[64] */&lt;BR /&gt;/* or void *pt[64] should be OK on both architectures */&lt;BR /&gt;&lt;BR /&gt;/* Pardiso control parameters. */&lt;BR /&gt;MKL_INT iparm[64];&lt;BR /&gt;MKL_INT maxfct, mnum, phase, error, msglvl;&lt;BR /&gt;/* Auxiliary variables. */&lt;BR /&gt;MKL_INT i;&lt;BR /&gt;double ddum; /* Double dummy */&lt;BR /&gt;MKL_INT idum; /* Integer dummy. */&lt;BR /&gt;/* -------------------------------------------------------------------- */&lt;BR /&gt;/* .. Setup Pardiso control parameters. */&lt;BR /&gt;/* -------------------------------------------------------------------- */&lt;BR /&gt;for (i = 0; i &amp;lt; 64; i++) {&lt;BR /&gt;iparm[i] = 0;&lt;BR /&gt;}&lt;BR /&gt;iparm[0] = 1; /* No solver default */&lt;BR /&gt;iparm[1] = 2; /* Fill-in reordering from METIS */&lt;BR /&gt;/* Numbers of processors, value of OMP_NUM_THREADS */&lt;BR /&gt;iparm[2] = 1;&lt;BR /&gt;iparm[3] = 0; /* No iterative-direct algorithm */&lt;BR /&gt;iparm[4] = 2; //return computed permutation&lt;BR /&gt;iparm[5] = 0; /* Write solution into x */&lt;BR /&gt;iparm[6] = 0; /* Not in use */&lt;BR /&gt;iparm[7] = 2; /* Max numbers of iterative refinement steps */&lt;BR /&gt;iparm[8] = 0; /* Not in use */&lt;BR /&gt;iparm[9] = 13; /* Perturb the pivot elements with 1E-13 */&lt;BR /&gt;iparm[10] = 1; /* Use nonsymmetric permutation and scaling MPS */&lt;BR /&gt;iparm[11] = 0; /* Not in use */&lt;BR /&gt;iparm[12] = 0; /* Not in use */&lt;BR /&gt;iparm[13] = 0; /* Output: Number of perturbed pivots */&lt;BR /&gt;iparm[14] = 0; /* Not in use */&lt;BR /&gt;iparm[15] = 0; /* Not in use */&lt;BR /&gt;iparm[16] = 0; /* Not in use */&lt;BR /&gt;iparm[17] = -1; /* Output: Number of nonzeros in the factor LU */&lt;BR /&gt;iparm[18] = -1; /* Output: Mflops for LU factorization */&lt;BR /&gt;iparm[19] = 0; /* Output: Numbers of CG Iterations */&lt;BR /&gt;iparm[26] = 1;&lt;BR /&gt;iparm[30] = 0;&lt;BR /&gt;iparm[34] = 1; //zero based indexing&lt;BR /&gt;iparm[35] = 0;&lt;BR /&gt;maxfct = 1; /* Maximum number of numerical factorizations. */&lt;BR /&gt;mnum = 1; /* Which factorization to use. */&lt;BR /&gt;msglvl = 0; /* Print statistical information in file */&lt;BR /&gt;error = 0; /* Initialize error flag */&lt;/P&gt;
&lt;P&gt;/* -------------------------------------------------------------------- */&lt;BR /&gt;/* .. Initialize the internal solver memory pointer. This is only */&lt;BR /&gt;/* necessary for the FIRST call of the PARDISO solver. */&lt;BR /&gt;/* -------------------------------------------------------------------- */&lt;/P&gt;
&lt;P&gt;phase = 11;&lt;/P&gt;
&lt;P&gt;//compute reference permutation&lt;BR /&gt;std::vector&amp;lt;int&amp;gt; ref_perm(N);&lt;BR /&gt;{&lt;BR /&gt;void* pt[64];&lt;BR /&gt;for (i = 0; i &amp;lt; 64; i++) {&lt;BR /&gt;pt[i] = 0;&lt;BR /&gt;}&lt;BR /&gt;PARDISO(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,&lt;BR /&gt;&amp;amp;N, val.data(), ia.data(), ja.data(), ref_perm.data(), &amp;amp;nrhs,&lt;BR /&gt;iparm, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);&lt;/P&gt;
&lt;P&gt;if (error != 0) {&lt;BR /&gt;printf("\nERROR during symbolic factorization: %d", error);&lt;BR /&gt;exit(1);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;phase = -1; /* Release internal memory. */&lt;BR /&gt;PARDISO(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,&lt;BR /&gt;&amp;amp;n, &amp;amp;ddum, ia.data(), ja.data(), ref_perm.data(), &amp;amp;nrhs,&lt;BR /&gt;iparm, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;//perform exact same symbolic factorization in multiple threads; check that results are the same&lt;BR /&gt;tbb::task_group tg;&lt;BR /&gt;//static std::mutex mtx;&lt;BR /&gt;for (int irep = 0; irep &amp;lt; nrep; irep++) {&lt;BR /&gt;tg.run([maxfct, mnum, mtype, phase, nrhs, &amp;amp;iparm, msglvl, error, &amp;amp;ia, &amp;amp;ja, &amp;amp;val, &amp;amp;ref_perm]() {&lt;/P&gt;
&lt;P&gt;//std::lock_guard&amp;lt;std::mutex&amp;gt; lock(mtx);&lt;/P&gt;
&lt;P&gt;void* pt[64];&lt;/P&gt;
&lt;P&gt;for (int i = 0; i &amp;lt; 64; i++) {&lt;BR /&gt;pt[i] = 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;MKL_INT iparm_[64]; memcpy(iparm_, iparm, 64 * sizeof(MKL_INT));&lt;/P&gt;
&lt;P&gt;std::vector&amp;lt;int&amp;gt; perm(N);&lt;BR /&gt;double ddum;&lt;BR /&gt;int idum;&lt;BR /&gt;int error;&lt;/P&gt;
&lt;P&gt;std::vector&amp;lt;int&amp;gt; ia_ = ia;&lt;BR /&gt;std::vector&amp;lt;int&amp;gt; ja_ = ja;&lt;BR /&gt;srand(333);&lt;BR /&gt;/* -------------------------------------------------------------------- */&lt;BR /&gt;/* .. Reordering and Symbolic Factorization. This step also allocates */&lt;BR /&gt;/* all memory that is necessary for the factorization. */&lt;BR /&gt;/* -------------------------------------------------------------------- */&lt;BR /&gt;int phase = 11;&lt;BR /&gt;PARDISO(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,&lt;BR /&gt;&amp;amp;N, val.data(), ia_.data(), ja_.data(), perm.data(), &amp;amp;nrhs,&lt;BR /&gt;iparm_, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);&lt;BR /&gt;if (error != 0) {&lt;BR /&gt;printf("\nERROR during symbolic factorization: %d", error);&lt;BR /&gt;exit(1);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;phase = -1; /* Release internal memory. */&lt;BR /&gt;PARDISO(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,&lt;BR /&gt;&amp;amp;n, &amp;amp;ddum, ia.data(), ja.data(), perm.data(), &amp;amp;nrhs,&lt;BR /&gt;iparm, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);&lt;/P&gt;
&lt;P&gt;//printf("perm[0]: %d\n", perm[0]);&lt;/P&gt;
&lt;P&gt;for (int i = 0; i &amp;lt; N; i++) {&lt;BR /&gt;if (perm[i] != ref_perm[i]) {&lt;BR /&gt;fprintf(stderr, "PARDISO is not thread safe!!!\n");&lt;BR /&gt;abort();&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;//printf("\nReordering completed ... ");&lt;BR /&gt;//printf("\nNumber of nonzeros in factors = %d", iparm[17]);&lt;BR /&gt;//printf("\nNumber of factorization MFLOPS = %d", iparm[18]);&lt;BR /&gt;});&lt;BR /&gt;}&lt;BR /&gt;tg.wait();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;return 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;----&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Build line: icpc -O3 pardisotest.cpp -ltbb -lmkl_intel_lp64 -lmkl_sequential -lmkl_core&lt;/P&gt;
&lt;P&gt;os: Ubuntu 20.04.4 LTS&lt;/P&gt;
&lt;P&gt;MKL version: 2022.2.0.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;lscpu output (this is an azure VM):&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Architecture: x86_64&lt;BR /&gt;CPU op-mode(s): 32-bit, 64-bit&lt;BR /&gt;Byte Order: Little Endian&lt;BR /&gt;Address sizes: 46 bits physical, 57 bits virtual&lt;BR /&gt;CPU(s): 64&lt;BR /&gt;On-line CPU(s) list: 0-63&lt;BR /&gt;Thread(s) per core: 2&lt;BR /&gt;Core(s) per socket: 16&lt;BR /&gt;Socket(s): 2&lt;BR /&gt;NUMA node(s): 2&lt;BR /&gt;Vendor ID: GenuineIntel&lt;BR /&gt;CPU family: 6&lt;BR /&gt;Model: 106&lt;BR /&gt;Model name: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz&lt;BR /&gt;Stepping: 6&lt;BR /&gt;CPU MHz: 2800.000&lt;BR /&gt;CPU max MHz: 2800.0000&lt;BR /&gt;CPU min MHz: 800.0000&lt;BR /&gt;BogoMIPS: 5586.87&lt;BR /&gt;Virtualization: VT-x&lt;BR /&gt;Hypervisor vendor: Microsoft&lt;BR /&gt;Virtualization type: full&lt;BR /&gt;L1d cache: 1.5 MiB&lt;BR /&gt;L1i cache: 1 MiB&lt;BR /&gt;L2 cache: 40 MiB&lt;BR /&gt;L3 cache: 96 MiB&lt;BR /&gt;NUMA node0 CPU(s): 0-31&lt;BR /&gt;NUMA node1 CPU(s): 32-63&lt;BR /&gt;Vulnerability Itlb multihit: Not affected&lt;BR /&gt;Vulnerability L1tf: Not affected&lt;BR /&gt;Vulnerability Mds: Not affected&lt;BR /&gt;Vulnerability Meltdown: Not affected&lt;BR /&gt;Vulnerability Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown&lt;BR /&gt;Vulnerability Retbleed: Vulnerable&lt;BR /&gt;Vulnerability Spec store bypass: Vulnerable&lt;BR /&gt;Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization&lt;BR /&gt;Vulnerability Spectre v2: Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected&lt;BR /&gt;Vulnerability Srbds: Not affected&lt;BR /&gt;Vulnerability Tsx async abort: Not affected&lt;BR /&gt;Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht sysc&lt;BR /&gt;all nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf pni &lt;BR /&gt;pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rd&lt;BR /&gt;rand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust&lt;BR /&gt;bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512&lt;BR /&gt;cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq&lt;BR /&gt;avx512_vnni avx512_bitalg avx512_vpopcntdq la57 rdpid fsrm arch_capabilities&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Aron&lt;/P&gt;</description>
      <pubDate>Mon, 12 Dec 2022 16:14:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1437785#M33990</guid>
      <dc:creator>arona</dc:creator>
      <dc:date>2022-12-12T16:14:10Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1439679#M34015</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Could you please provide us with the expected results and the results that you are getting?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 19 Dec 2022 08:56:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1439679#M34015</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-12-19T08:56:19Z</dc:date>
    </item>
    <item>
      <title>Re: Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1440155#M34025</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The program makes identical calls to PARDISO and checks that the results are identical. When the results are not identical it aborts with the message "&lt;SPAN&gt;PARDISO is not thread safe!!!"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Aron&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 20 Dec 2022 15:55:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1440155#M34025</guid>
      <dc:creator>arona</dc:creator>
      <dc:date>2022-12-20T15:55:24Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1442203#M34081</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Could you please confirm if the data which you are working with is sparse type?&lt;/P&gt;&lt;P&gt;Based on our observation, the test data is not sparse. You can also try the Pardiso examples that come with MKL installation.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 28 Dec 2022 09:23:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1442203#M34081</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-12-28T09:23:29Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1444199#M34125</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;As we haven't heard back from you, could you please provide us with an update regarding the issue?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Thu, 05 Jan 2023 16:55:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1444199#M34125</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2023-01-05T16:55:26Z</dc:date>
    </item>
    <item>
      <title>Re: Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1445005#M34134</link>
      <description>&lt;P&gt;Vidya,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What do you mean? It's clearly sparse matrix. And even if I did use PARDISO for a dense matrix I think it's still reasonable to expect that it doesn't give random results when called from multiple threads simultaneously.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could you please ask someone who actually develops PARDISO to have a look at this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Aron&lt;/P&gt;</description>
      <pubDate>Mon, 09 Jan 2023 15:31:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1445005#M34134</guid>
      <dc:creator>arona</dc:creator>
      <dc:date>2023-01-09T15:31:46Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1446461#M34162</link>
      <description>&lt;P class="sub_section_element_selectors"&gt;Hi Vidya, As we haven't heard back from you, could you please provide us with an update regarding the issue?&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;Have you been able to reproduce it using the OP's reproducer?&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;Regards&lt;BR /&gt;&lt;SPAN&gt;Andy&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="sub_section_element_selectors"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 13 Jan 2023 15:26:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1446461#M34162</guid>
      <dc:creator>Andrew_Smith</dc:creator>
      <dc:date>2023-01-13T15:26:45Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1446468#M34164</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Apologies for the delay.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Yes, I could reproduce the issue and already forwarded the issue to the concerned development team. We are working on your issue internally and will get back to you as soon as I get an update.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Fri, 13 Jan 2023 15:44:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1446468#M34164</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2023-01-13T15:44:21Z</dc:date>
    </item>
    <item>
      <title>Re: Re:PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1446593#M34166</link>
      <description>&lt;P&gt;Great to hear! Looking forward to you fixing this issue.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Aron&lt;/P&gt;</description>
      <pubDate>Fri, 13 Jan 2023 21:37:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1446593#M34166</guid>
      <dc:creator>arona</dc:creator>
      <dc:date>2023-01-13T21:37:02Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1447065#M34171</link>
      <description>&lt;P&gt;Hi Aron,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could you please let us know what the capacity value from the screenshot below indicates?&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="VidyalathaB_Intel_0-1673875261511.png" style="width: 400px;"&gt;&lt;img src="https://community.intel.com/t5/image/serverpage/image-id/37108iDBDD7146FB5D329D/image-size/medium?v=v2&amp;amp;px=400&amp;amp;whitelist-exif-data=Orientation%2CResolution%2COriginalDefaultFinalSize%2CCopyright" role="button" title="VidyalathaB_Intel_0-1673875261511.png" alt="VidyalathaB_Intel_0-1673875261511.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(This is the output that we got when debugging the code using gdb).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Vidya.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 16 Jan 2023 13:21:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1447065#M34171</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2023-01-16T13:21:37Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1447087#M34172</link>
      <description>&lt;P&gt;Uhhh... The amount of memory allocated by the std::vector I guess. What has that got to do with anything? And why are you asking me about STL internals? Again, the bug is in PARDISO, not in my code (or in STL (!)). You really need to pass this on to the MKL development team.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;Aron&lt;/P&gt;</description>
      <pubDate>Mon, 16 Jan 2023 14:51:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1447087#M34172</guid>
      <dc:creator>arona</dc:creator>
      <dc:date>2023-01-16T14:51:08Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO with METIS is not thread safe</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1567686#M35757</link>
      <description>&lt;P&gt;Dear arona,&lt;/P&gt;
&lt;P&gt;Thank you for your patient and thank you again for posting your concern in the Community. We are delighted to let you know that the fix will be available in the next release version.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;/P&gt;
&lt;P&gt;Ruqiu&lt;/P&gt;</description>
      <pubDate>Wed, 31 Jan 2024 01:49:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-with-METIS-is-not-thread-safe/m-p/1567686#M35757</guid>
      <dc:creator>Ruqiu_C_Intel</dc:creator>
      <dc:date>2024-01-31T01:49:35Z</dc:date>
    </item>
  </channel>
</rss>

