<?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 Sorry for late response. in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111347#M24386</link>
    <description>&lt;P&gt;Sorry for late response.&lt;/P&gt;

&lt;P&gt;pardiso is crashed in symbolic factorize when I set to another number except 1 in iparm[33].&lt;/P&gt;

&lt;P&gt;&amp;gt; Can I ask you the question?&lt;/P&gt;

&lt;P&gt;If iparm[33] == 1, didn't it work multi-thread ? ,even though "mkl_set_num_threads(8)"&lt;/P&gt;

&lt;P&gt;I attach the message of the result of "iparm[33] == 1" case, the name of file is "result_of_iparm_33_set_to_1.zip"&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;The message is "Parallel Direct Factorization is running on 8 OpenMP". So I think it works multi-thread.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;Am I wrong?&lt;/P&gt;

&lt;P&gt;In manual, the option of&amp;nbsp;&lt;SPAN style="font-size: 13.008px;"&gt;iparm[33] is "&lt;/SPAN&gt;Optimal number of OpenMP threads for conditional numerical reproducibility (CNR) mode".&lt;/P&gt;

&lt;P&gt;What's mean of optimal number of OpenMP threads ?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;&amp;gt; Can I ask you the another question?&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;I saw the "&lt;SPAN style="font-size: 13.008px;"&gt;Set the number of threads to a constant number" for consistence results in CBWR manual.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;What's mean of "Set the number of threads to a constant number".&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;It means result of thread 1 is different result of thread 2 or 4 even though I set the option of "mkl_cbwr_set".&lt;/P&gt;

&lt;P&gt;I did test the my problem with pardiso on multi-thread.&lt;/P&gt;

&lt;P&gt;In my experience, I didn't catch the difference by using the option of "mkl_cbwr_set".&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;thank you in advance.&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 15 Mar 2017 05:45:39 GMT</pubDate>
    <dc:creator>____</dc:creator>
    <dc:date>2017-03-15T05:45:39Z</dc:date>
    <item>
      <title>failure pardiso with CBWR</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111341#M24380</link>
      <description>&lt;P&gt;Hello everyone.&lt;/P&gt;

&lt;P&gt;I am using pardiso to solve unsymmetric system with CBWR(Conditional Bitwise Reproducibility) , but some special case it didn't work in symbolic factorize.&lt;/P&gt;

&lt;P&gt;The test matrix is simple 3x3 matrix.&lt;/P&gt;

&lt;P&gt;May I check what is the problem ?&lt;/P&gt;

&lt;P&gt;I am using test library which is located in "compilers_and_libraries_2017.2.187". It may be "Intel Math Kernel Library 2017 Update 2".&lt;/P&gt;

&lt;P&gt;Thank you for advance.&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;// SimpleCrashTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

/*******************************************************************************
* Copyright 2004-2016 Intel Corporation All Rights Reserved.
*
* The source code,  information  and material  ("Material") contained  herein is
* owned by Intel Corporation or its  suppliers or licensors,  and  title to such
* Material remains with Intel  Corporation or its  suppliers or  licensors.  The
* Material  contains  proprietary  information  of  Intel or  its suppliers  and
* licensors.  The Material is protected by  worldwide copyright  laws and treaty
* provisions.  No part  of  the  Material   may  be  used,  copied,  reproduced,
* modified, published,  uploaded, posted, transmitted,  distributed or disclosed
* in any way without Intel's prior express written permission.  No license under
* any patent,  copyright or other  intellectual property rights  in the Material
* is granted to  or  conferred  upon  you,  either   expressly,  by implication,
* inducement,  estoppel  or  otherwise.  Any  license   under such  intellectual
* property rights must be express and approved by Intel in writing.
*
* Unless otherwise agreed by Intel in writing,  you may not remove or alter this
* notice or  any  other  notice   embedded  in  Materials  by  Intel  or Intel's
* suppliers or licensors in any way.
*******************************************************************************/

/*
*   Content : Intel(R) MKL PARDISO C example
*
********************************************************************************
*/
/* -------------------------------------------------------------------- */
/* Example program to show the use of the "PARDISO" routine */
/* on unsymmetric linear systems */
/* -------------------------------------------------------------------- */
/* This program can be downloaded from the following site: */
/* &lt;A href="https://community.intel.com/www.pardiso-project.org" target="_blank"&gt;www.pardiso-project.org&lt;/A&gt; */
/* */
/* (C) Olaf Schenk, Department of Computer Science, */
/* University of Basel, Switzerland. */
/* Email: olaf.schenk@unibas.ch */
/* -------------------------------------------------------------------- */
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;math.h&amp;gt;

#include "mkl_pardiso.h"
#include "mkl_types.h"
#include "mkl_service.h"

//#define Diagonal
MKL_INT main(void)
{
   int my_cbwr_branch = 0;
   my_cbwr_branch = mkl_cbwr_get_auto_branch();
   mkl_cbwr_set(my_cbwr_branch);
   /* Matrix data. */
   MKL_INT n = 3;
#ifdef Diagonal
   MKL_INT ia[4] = { 1, 2, 3, 4 };
   MKL_INT ja[3] =
   { 1,
       2,
         3
   };
   double a[3] =
   { 43.157629078689801, 
     53947.036348362199,
     1601061.7235612301
   };
#else
   MKL_INT ia[4] = { 1, 3, 5, 6 };
   MKL_INT ja[5] =
   { 1, 2,
      1, 2,
      3
   };
   double a[5] =
   { 43.157629078689801, 0.0000000000000000,
      0.000000000000000, 53947.036348362199,
      1601061.7235612301
   };
#endif // Diagonal

   MKL_INT mtype = 11;       /* Real unsymmetric matrix */
                             /* RHS and solution vectors. */
   double b[3], x[3];
   MKL_INT nrhs = 1;     /* Number of right hand sides. */
                         /* Internal solver memory pointer pt, */
                         /* 32-bit: int pt[64]; 64-bit: long int pt[64] */
                         /* or void *pt[64] should be OK on both architectures */
   void *pt[64];
   /* Pardiso control parameters. */
   MKL_INT iparm[64];
   MKL_INT maxfct, mnum, phase, error, msglvl;
   /* Auxiliary variables. */
   MKL_INT i, j;
   double ddum;          /* Double dummy */
   MKL_INT idum;         /* Integer dummy. */
   char *uplo;
   /* -------------------------------------------------------------------- */
   /* .. Setup Pardiso control parameters. */
   /* -------------------------------------------------------------------- */
   for (i = 0; i &amp;lt; 64; i++)
   {
      iparm&lt;I&gt; = 0;
   }
   iparm[0] = 1;         /* No solver default */
   iparm[1] = 2;         /* Fill-in reordering from METIS */
   iparm[3] = 0;         /* No iterative-direct algorithm */
   iparm[4] = 0;         /* No user fill-in reducing permutation */
   iparm[5] = 0;         /* Write solution into x */
   iparm[6] = 0;         /* Not in use */
   iparm[7] = 2;         /* Max numbers of iterative refinement steps */
   iparm[8] = 0;         /* Not in use */
   iparm[9] = 13;        /* Perturb the pivot elements with 1E-13 */
   iparm[10] = 1;        /* Use nonsymmetric permutation and scaling MPS */
   iparm[11] = 0;        /* Conjugate transposed/transpose solve */
   iparm[12] = 1;        /* Maximum weighted matching algorithm is switched-on (default for non-symmetric) */
   iparm[13] = 0;        /* Output: Number of perturbed pivots */
   iparm[14] = 0;        /* Not in use */
   iparm[15] = 0;        /* Not in use */
   iparm[16] = 0;        /* Not in use */
   iparm[17] = -1;       /* Output: Number of nonzeros in the factor LU */
   iparm[18] = -1;       /* Output: Mflops for LU factorization */
   iparm[19] = 0;        /* Output: Numbers of CG Iterations */
   maxfct = 1;           /* Maximum number of numerical factorizations. */
   mnum = 1;         /* Which factorization to use. */
   msglvl = 1;           /* Print statistical information in file */
   error = 0;            /* Initialize error flag */
                         /* -------------------------------------------------------------------- */
                         /* .. Initialize the internal solver memory pointer. This is only */
                         /* necessary for the FIRST call of the PARDISO solver. */
                         /* -------------------------------------------------------------------- */
   for (i = 0; i &amp;lt; 64; i++)
   {
      pt&lt;I&gt; = 0;
   }
   /* -------------------------------------------------------------------- */
   /* .. Reordering and Symbolic Factorization. This step also allocates */
   /* all memory that is necessary for the factorization. */
   /* -------------------------------------------------------------------- */
   phase = 11;
   PARDISO(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,
      &amp;amp;n, a, ia, ja, &amp;amp;idum, &amp;amp;nrhs, iparm, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);
   if (error != 0)
   {
      printf("\nERROR during symbolic factorization: %d", error);
      exit(1);
   }
   printf("\nReordering completed ... ");
   printf("\nNumber of nonzeros in factors = %d", iparm[17]);
   printf("\nNumber of factorization MFLOPS = %d", iparm[18]);
   /* -------------------------------------------------------------------- */
   /* .. Numerical factorization. */
   /* -------------------------------------------------------------------- */
   phase = 22;
   PARDISO(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,
      &amp;amp;n, a, ia, ja, &amp;amp;idum, &amp;amp;nrhs, iparm, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);
   if (error != 0)
   {
      printf("\nERROR during numerical factorization: %d", error);
      exit(2);
   }
   printf("\nFactorization completed ... ");
   /* -------------------------------------------------------------------- */
   /* .. Back substitution and iterative refinement. */
   /* -------------------------------------------------------------------- */
   phase = 33;
   /* Set right hand side to one. */
   for (i = 0; i &amp;lt; n; i++)
   {
      b&lt;I&gt; = 1;
   }
   //  Loop over 3 solving steps: Ax=b, AHx=b and ATx=b
   for (i = 0; i &amp;lt; 3; i++)
   {
      iparm[11] = i;        /* Conjugate transposed/transpose solve */
      if (i == 0)
         uplo = "non-transposed";
      else if (i == 1)
         uplo = "conjugate transposed";
      else
         uplo = "transposed";

      printf("\n\nSolving %s system...\n", uplo);
      PARDISO(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,
         &amp;amp;n, a, ia, ja, &amp;amp;idum, &amp;amp;nrhs, iparm, &amp;amp;msglvl, b, x, &amp;amp;error);
      if (error != 0)
      {
         printf("\nERROR during solution: %d", error);
         exit(3);
      }

      printf("\nThe solution of the system is: ");
      for (j = 0; j &amp;lt; n; j++)
      {
         printf("\n x [%d] = % f", j, x&lt;J&gt;);
      }
      printf("\n");
      //// Compute residual
      //mkl_dcsrgemv(uplo, &amp;amp;n, a, ia, ja, x, bs);
      //res = 0.0;
      //res0 = 0.0;
      //for (j = 1; j &amp;lt;= n; j++)
      //{
      //   res += (bs[j - 1] - b[j - 1]) * (bs[j - 1] - b[j - 1]);
      //   res0 += b[j - 1] * b[j - 1];
      //}
      //res = sqrt(res) / sqrt(res0);
      //printf("\nRelative residual = %e", res);
      //// Check residual
      //if (res &amp;gt; 1e-10)
      //{
      //   printf("Error: residual is too high!\n");
      //   exit(10 + i);
      //}
   }

   /* -------------------------------------------------------------------- */
   /* .. Termination and release of memory. */
   /* -------------------------------------------------------------------- */
   phase = -1;           /* Release internal memory. */
   PARDISO(pt, &amp;amp;maxfct, &amp;amp;mnum, &amp;amp;mtype, &amp;amp;phase,
      &amp;amp;n, &amp;amp;ddum, ia, ja, &amp;amp;idum, &amp;amp;nrhs,
      iparm, &amp;amp;msglvl, &amp;amp;ddum, &amp;amp;ddum, &amp;amp;error);
   return 0;
}
&lt;/J&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Mar 2017 07:23:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111341#M24380</guid>
      <dc:creator>____</dc:creator>
      <dc:date>2017-03-06T07:23:17Z</dc:date>
    </item>
    <item>
      <title>Hello,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111342#M24381</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;Could you tell your OS and Processor type and how you build the code?&lt;/P&gt;

&lt;P&gt;Best Regards,&lt;/P&gt;

&lt;P&gt;Ying&lt;/P&gt;</description>
      <pubDate>Mon, 06 Mar 2017 11:34:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111342#M24381</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2017-03-06T11:34:47Z</dc:date>
    </item>
    <item>
      <title>Hello,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111343#M24382</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;I am using "Visual Studio 2015" in windows 10.&lt;/P&gt;

&lt;P&gt;My processor is Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz.&lt;/P&gt;

&lt;P&gt;Thank you for advance.&lt;/P&gt;</description>
      <pubDate>Tue, 07 Mar 2017 00:52:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111343#M24382</guid>
      <dc:creator>____</dc:creator>
      <dc:date>2017-03-07T00:52:01Z</dc:date>
    </item>
    <item>
      <title>please try to use iparm[33]</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111344#M24383</link>
      <description>&lt;P&gt;please try to use iparm[33] to take CNR outputs. Please refer to the&amp;nbsp;Developer Reference for MKL to see how to use it.&lt;/P&gt;</description>
      <pubDate>Tue, 07 Mar 2017 18:26:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111344#M24383</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2017-03-07T18:26:50Z</dc:date>
    </item>
    <item>
      <title>Thanks Gennady F.</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111345#M24384</link>
      <description>&lt;P&gt;Thanks Gennady F.&lt;/P&gt;

&lt;P&gt;I set the parameter to&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp;iparm[59] = 0; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* input switches between in-core (IC) and out-of-core (OOC) */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;iparm[33] = 1; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* input Optimal number of OpenMP threads for conditional numerical reproducibility (CNR) mode */&lt;/P&gt;

&lt;P&gt;It works.&lt;/P&gt;

&lt;P&gt;But the other number of iparm[33] did not work except 1.&lt;/P&gt;

&lt;P&gt;Do you know why?&lt;/P&gt;

&lt;P&gt;Thank you for advance.&lt;/P&gt;</description>
      <pubDate>Wed, 08 Mar 2017 01:59:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111345#M24384</guid>
      <dc:creator>____</dc:creator>
      <dc:date>2017-03-08T01:59:56Z</dc:date>
    </item>
    <item>
      <title>What do you mean by "did't</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111346#M24385</link>
      <description>&lt;P&gt;What do you mean by "did't work exept 1"? &amp;nbsp; When you set, as an example iparm[33] = 4, Pardiso will not produce the same results?&lt;/P&gt;</description>
      <pubDate>Wed, 08 Mar 2017 08:23:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111346#M24385</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2017-03-08T08:23:00Z</dc:date>
    </item>
    <item>
      <title>Sorry for late response.</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111347#M24386</link>
      <description>&lt;P&gt;Sorry for late response.&lt;/P&gt;

&lt;P&gt;pardiso is crashed in symbolic factorize when I set to another number except 1 in iparm[33].&lt;/P&gt;

&lt;P&gt;&amp;gt; Can I ask you the question?&lt;/P&gt;

&lt;P&gt;If iparm[33] == 1, didn't it work multi-thread ? ,even though "mkl_set_num_threads(8)"&lt;/P&gt;

&lt;P&gt;I attach the message of the result of "iparm[33] == 1" case, the name of file is "result_of_iparm_33_set_to_1.zip"&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;The message is "Parallel Direct Factorization is running on 8 OpenMP". So I think it works multi-thread.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;Am I wrong?&lt;/P&gt;

&lt;P&gt;In manual, the option of&amp;nbsp;&lt;SPAN style="font-size: 13.008px;"&gt;iparm[33] is "&lt;/SPAN&gt;Optimal number of OpenMP threads for conditional numerical reproducibility (CNR) mode".&lt;/P&gt;

&lt;P&gt;What's mean of optimal number of OpenMP threads ?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;&amp;gt; Can I ask you the another question?&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;I saw the "&lt;SPAN style="font-size: 13.008px;"&gt;Set the number of threads to a constant number" for consistence results in CBWR manual.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;What's mean of "Set the number of threads to a constant number".&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;It means result of thread 1 is different result of thread 2 or 4 even though I set the option of "mkl_cbwr_set".&lt;/P&gt;

&lt;P&gt;I did test the my problem with pardiso on multi-thread.&lt;/P&gt;

&lt;P&gt;In my experience, I didn't catch the difference by using the option of "mkl_cbwr_set".&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;thank you in advance.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Mar 2017 05:45:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111347#M24386</guid>
      <dc:creator>____</dc:creator>
      <dc:date>2017-03-15T05:45:39Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111348#M24387</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;Sorry for slow response. Your question make sense. &amp;nbsp;It seems &amp;nbsp;a bug of pardiso&amp;nbsp;during setting cbwr for small &amp;nbsp;matrix. &amp;nbsp;The issue was escalated to our developer and will update you if any fix.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Best Regards,&lt;/P&gt;

&lt;P&gt;Ying&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Mar 2017 13:00:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111348#M24387</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2017-03-27T13:00:25Z</dc:date>
    </item>
    <item>
      <title>update</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111349#M24388</link>
      <description>update 

MKL 2017 update 4 released and the related problem: pardiso don't work during setting cbwr for small pardiso matrix should be fixed in the version and later release 2018 update 1. 

Please find chance to try them. 

Thanks
Ying</description>
      <pubDate>Mon, 09 Oct 2017 05:57:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/failure-pardiso-with-CBWR/m-p/1111349#M24388</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2017-10-09T05:57:19Z</dc:date>
    </item>
  </channel>
</rss>

