<?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 Hi, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130866#M25591</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have double checked with your sample code to verify, please use &amp;nbsp;-DMKL_LP64 to replace &amp;nbsp;-DMKL_ILP64, then the results will be your expectation. Or&amp;nbsp;link library with libmkl_intel_ilp64.a for ILP.&lt;/P&gt;&lt;P&gt;There is an article about Using the ILP64 Interface vs. LP64 Interface at the link below.&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/en-us/mkl-macos-developer-guide-using-the-ilp64-interface-vs-lp64-interface" target="_blank"&gt;https://software.intel.com/en-us/mkl-macos-developer-guide-using-the-ilp64-interface-vs-lp64-interface&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Hopefully it's useful for you.&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Ruqiu&lt;/P&gt;</description>
    <pubDate>Wed, 24 Jul 2019 07:39:31 GMT</pubDate>
    <dc:creator>Ruqiu_C_Intel</dc:creator>
    <dc:date>2019-07-24T07:39:31Z</dc:date>
    <item>
      <title>Bug in mkl_sparse_d_mm</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130864#M25589</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I think that the result of "mkl_sparse_d_mm" is incorrect as evident for the following code. The&amp;nbsp;code&amp;nbsp;basically tries to multiply the Identity matrix&amp;nbsp;stored in CSR format with a dense matrix and checks whether the result and the input matrix are the same. This also the case in ROW MAJOR layout as well.&lt;/P&gt;
&lt;PRE class="brush:cpp; class-name:dark;"&gt;int main() {

&amp;nbsp; &amp;nbsp;MKL_INT n = 5;
&amp;nbsp; &amp;nbsp;MKL_INT rows_start[5] = {0,1,2,3,4};
&amp;nbsp; &amp;nbsp;MKL_INT rows_end[5] &amp;nbsp; = {1,2,3,4,5};
&amp;nbsp; &amp;nbsp;MKL_INT col_indx[5] &amp;nbsp; = {0,1,2,3,4};
&amp;nbsp; &amp;nbsp;double values[5] &amp;nbsp; &amp;nbsp; = {1,1,1,1,1};
&amp;nbsp; &amp;nbsp;sparse_matrix_t &amp;nbsp; &amp;nbsp; &amp;nbsp; csrA = NULL;
&amp;nbsp; &amp;nbsp;sparse_index_base_t &amp;nbsp; &amp;nbsp;indexing;
&amp;nbsp; &amp;nbsp;struct matrix_descr &amp;nbsp; &amp;nbsp;descr_type_gen;
&amp;nbsp; &amp;nbsp;descr_type_gen.type = SPARSE_MATRIX_TYPE_GENERAL;
&amp;nbsp; &amp;nbsp;mkl_sparse_d_create_csr ( &amp;amp;csrA, SPARSE_INDEX_BASE_ZERO, n, n, rows_start, rows_end, col_indx, values);
&amp;nbsp; &amp;nbsp;MKL_INT row, col;
&amp;nbsp; &amp;nbsp;sparse_index_base_t indextype;
&amp;nbsp; &amp;nbsp;MKL_INT * bi, *ei, *indx;
&amp;nbsp; &amp;nbsp;double *rv;
&amp;nbsp; &amp;nbsp;mkl_sparse_d_export_csr(csrA, &amp;amp;indextype, &amp;amp;row, &amp;amp;col, &amp;amp;bi, &amp;amp;ei, &amp;amp;indx, &amp;amp;rv);
&amp;nbsp; &amp;nbsp;printf("Input csr matrix\n");
&amp;nbsp; &amp;nbsp;for(long i=0; i &amp;lt; n; i++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("%ld ----&amp;gt; ",i);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(long l = 0; l &amp;lt; n; l++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bool flag = false;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(long j=bi&lt;I&gt;; j &amp;lt; ei&lt;I&gt;; j++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(indx&lt;J&gt; == l) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = true;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("%.0lf ",rv&lt;J&gt;);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!flag)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("%d ",0);

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("\n");
&amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; double *matrix = (double *) mkl_malloc ( n*2*sizeof(double), ALIGN);
&amp;nbsp; &amp;nbsp; double *result = (double *) mkl_calloc ( n*2, sizeof(double), ALIGN);
&amp;nbsp; &amp;nbsp; for(long i=0; i &amp;lt; n; i++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; matrix&lt;I&gt; = i+1;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; matrix[i + n] = n-i;
&amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; printf("Input dense matrix\n");
&amp;nbsp; &amp;nbsp; for(long i=0; i &amp;lt; n; i++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(long j=0 ; j &amp;lt; 2; j++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("%.2lf ", matrix[i + j*n]);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("\n");
&amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; mkl_sparse_d_mm( SPARSE_OPERATION_NON_TRANSPOSE, 1, csrA, descr_type_gen, SPARSE_LAYOUT_COLUMN_MAJOR, matrix, 2, n, 0, result, n);
&amp;nbsp; printf("Outpur result matrix\n");
&amp;nbsp; for(long i=0; i &amp;lt; n; i++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(long j=0 ; j &amp;lt; 2; j++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("%.2lf ", result[i + j*n]);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("\n");
&amp;nbsp; }
&amp;nbsp; mkl_free(matrix);
&amp;nbsp; mkl_free(result);

&amp;nbsp; return 0;
}&lt;/I&gt;&lt;/J&gt;&lt;/J&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;

&lt;P&gt;The output of the above code is :-&lt;/P&gt;

&lt;PRE class="brush:; class-name:dark;"&gt;Input csr matrix
0 ----&amp;gt; 1 0 0 0 0
1 ----&amp;gt; 0 1 0 0 0
2 ----&amp;gt; 0 0 1 0 0
3 ----&amp;gt; 0 0 0 1 0
4 ----&amp;gt; 0 0 0 0 1
Input dense matrix
1.00 5.00
2.00 4.00
3.00 3.00
4.00 2.00
5.00 1.00
Output result matrix
1.00 5.00
0.00 0.00
1.00 5.00
0.00 0.00
2.00 4.00
&lt;/PRE&gt;

&lt;P&gt;I run the above with the following options:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;P&gt;icc -I. -I/opt/intel/compilers_and_libraries_2019.3.199/linux/mkl/include -DMKL_ILP64 -Wall -O3 -qopenmp -qopenmp-simd -mkl=parallel &amp;nbsp;-std=c++11 -Wno-attributes mkl_sparse_d_mm.cpp -o mkl_sparse_mm -L/opt/intel/compilers_and_libraries_2019.3.199/linux/mkl/lib/intel64_lin &amp;nbsp;-lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;and I also tried with a different intel mkl version as follows:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;P&gt;icc -I. -I/opt/intel/compilers_and_libraries_2018.5.274/linux/mkl/include -DMKL_ILP64 -Wall -O3 -qopenmp -qopenmp-simd -mkl=parallel &amp;nbsp;-std=c++11 -Wno-attributes mkl_sparse_d_mm.cpp -o mkl_sparse_mm -L/opt/intel/compilers_and_libraries_2018.5.274/linux/mkl/lib/intel64_lin &amp;nbsp;-lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Jul 2019 21:45:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130864#M25589</guid>
      <dc:creator>Mishra__Ashirbad</dc:creator>
      <dc:date>2019-07-18T21:45:12Z</dc:date>
    </item>
    <item>
      <title>This is also the case in ROW</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130865#M25590</link>
      <description>&lt;P&gt;This is also the case in ROW MAJOR layout.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Jul 2019 22:01:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130865#M25590</guid>
      <dc:creator>Mishra__Ashirbad</dc:creator>
      <dc:date>2019-07-18T22:01:09Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130866#M25591</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have double checked with your sample code to verify, please use &amp;nbsp;-DMKL_LP64 to replace &amp;nbsp;-DMKL_ILP64, then the results will be your expectation. Or&amp;nbsp;link library with libmkl_intel_ilp64.a for ILP.&lt;/P&gt;&lt;P&gt;There is an article about Using the ILP64 Interface vs. LP64 Interface at the link below.&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/en-us/mkl-macos-developer-guide-using-the-ilp64-interface-vs-lp64-interface" target="_blank"&gt;https://software.intel.com/en-us/mkl-macos-developer-guide-using-the-ilp64-interface-vs-lp64-interface&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Hopefully it's useful for you.&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Ruqiu&lt;/P&gt;</description>
      <pubDate>Wed, 24 Jul 2019 07:39:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130866#M25591</guid>
      <dc:creator>Ruqiu_C_Intel</dc:creator>
      <dc:date>2019-07-24T07:39:31Z</dc:date>
    </item>
    <item>
      <title>Hello,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130867#M25592</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;Let me slightly correct the explanation from the previous answer (there is no use of -DMKL_LP64 flag) and clarify what happened.&lt;/P&gt;&lt;P&gt;When you are linking MKL, you have several options:&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;1) Use MKL Link Line Advisor (https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor). There, you can choose LP64 or ILP64 interface (32-bit or 64-bit integers as an interface layer).&amp;nbsp;&lt;BR /&gt;In this case, &lt;STRONG&gt;you don't use flags&lt;/STRONG&gt; -mkl=parallel but rather what the Advisot tells you.&lt;BR /&gt;For example, it could look like&amp;nbsp;&lt;BR /&gt;&amp;nbsp;-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm -ldl&lt;BR /&gt;for the link line (this one for static linking and LP64 interface but you can choose whatever you want there).&lt;/P&gt;&lt;P&gt;2) Or, you use a compiler option&amp;nbsp;-mkl=parallel, following&amp;nbsp;https://software.intel.com/en-us/mkl-linux-developer-guide-using-the-mkl-compiler-option. This option always links against the LP64 interface under the hood. In this case, you don't link explicitly against other libs.&lt;/P&gt;&lt;P&gt;So, what happened in your case is that option -mkl=parallel was linking against LP64 while you also manually added ILP64 libs to the link line and these options simply contradicted each other.&lt;/P&gt;&lt;P&gt;I hope this helps.&lt;/P&gt;&lt;P&gt;Best,&lt;BR /&gt;Kirill&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 24 Jul 2019 16:11:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130867#M25592</guid>
      <dc:creator>Kirill_V_Intel</dc:creator>
      <dc:date>2019-07-24T16:11:02Z</dc:date>
    </item>
    <item>
      <title>Thanks, Ruqiu.</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130868#M25593</link>
      <description>&lt;P&gt;Thanks, Ruqiu.&lt;/P&gt;&lt;P&gt;Thanks,&amp;nbsp;Kirill.&lt;/P&gt;&lt;P&gt;I need the ILP64 interface for long storage type for the indices.&lt;/P&gt;&lt;P&gt;The solution with the static library works and the results seem correct.&lt;/P&gt;&lt;P&gt;Thanks a lot.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 24 Jul 2019 20:23:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130868#M25593</guid>
      <dc:creator>Mishra__Ashirbad</dc:creator>
      <dc:date>2019-07-24T20:23:11Z</dc:date>
    </item>
    <item>
      <title>Quote:Voronin, Kirill (Intel)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130869#M25594</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Voronin, Kirill (Intel) wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;Let me slightly correct the explanation from the previous answer (there is no use of -DMKL_LP64 flag) and clarify what happened.&lt;/P&gt;&lt;P&gt;When you are linking MKL, you have several options:&lt;/P&gt;&lt;P&gt;1) Use MKL Link Line Advisor (&lt;A href="https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor"&gt;https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor&lt;/A&gt;). There, you can choose LP64 or ILP64 interface (32-bit or 64-bit integers as an interface layer).&amp;nbsp;&lt;BR /&gt;In this case, &lt;STRONG&gt;you don't use flags&lt;/STRONG&gt; -mkl=parallel but rather what the Advisot tells you.&lt;BR /&gt;For example, it could look like&amp;nbsp;&lt;BR /&gt;&amp;nbsp;-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm -ldl&lt;BR /&gt;for the link line (this one for static linking and LP64 interface but you can choose whatever you want there).&lt;/P&gt;&lt;P&gt;2) Or, you use a compiler option&amp;nbsp;-mkl=parallel, following&amp;nbsp;&lt;A href="https://software.intel.com/en-us/mkl-linux-developer-guide-using-the-mkl-compiler-option"&gt;https://software.intel.com/en-us/mkl-linux-developer-guide-using-the-mkl...&lt;/A&gt;. This option always links against the LP64 interface under the hood. In this case, you don't link explicitly against other libs.&lt;/P&gt;&lt;P&gt;So, what happened in your case is that option -mkl=parallel was linking against LP64 while you also manually added ILP64 libs to the link line and these options simply contradicted each other.&lt;/P&gt;&lt;P&gt;I hope this helps.&lt;/P&gt;&lt;P&gt;Best,&lt;BR /&gt;Kirill&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hi&amp;nbsp;Kirill,&lt;/P&gt;&lt;P&gt;Should I use the -mkl flag at all?&amp;nbsp;The sample code that I had mentioned was only for testing. Nevertheless, I use the mkl routines of sparse blas,&amp;nbsp;cblas and eigensolvers for a large codebase. I use openmp with simd options and looking at performance testing.&lt;/P&gt;&lt;P&gt;The Intel MKL advisor doesn't mention using -qopenmp and/or -qopenmp-simd&amp;nbsp; or optimization flags such as -O2 while compiling with icc.&lt;/P&gt;&lt;P&gt;Is there a way to know which options might conflict with the ILP64 interface which need for the larger storage indices.&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ashirbad&lt;/P&gt;</description>
      <pubDate>Wed, 24 Jul 2019 20:35:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130869#M25594</guid>
      <dc:creator>Mishra__Ashirbad</dc:creator>
      <dc:date>2019-07-24T20:35:45Z</dc:date>
    </item>
    <item>
      <title>Hi Ashirbad,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130870#M25595</link>
      <description>&lt;P&gt;Hi Ashirbad,&lt;/P&gt;&lt;P&gt;No, you shouldn't&amp;nbsp;use -mkl flag, since it works with LP64 interface only.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Basically, you need to link against the ILP64 interface so that MKL internally can find correct functionality working with 64-bit integers and you need -DMKL_ILP64 flag to have MKL_INT as 64-bit integer type. So, compiler options you have mentioned work with ILP64 interface&amp;nbsp;without any trouble. For example, -O2 option will affect only how &lt;STRONG&gt;your code&lt;/STRONG&gt; is compiled and not the performance of Intel MKL, since you have Intel MKL as a library and just link against it.&lt;BR /&gt;MKL Link Line Advisor thus only shows what you should &lt;STRONG&gt;add&lt;/STRONG&gt; to your compile and link line in order to use MKL.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Also, note that there are a lot of environment settings&amp;nbsp;which can affect performance. For example, for optimal performance with OpenMP threading, you need also to think about setting correct KMP_AFFINITY and numa control options.&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best,&lt;BR /&gt;Kirill&lt;/P&gt;</description>
      <pubDate>Wed, 24 Jul 2019 21:05:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130870#M25595</guid>
      <dc:creator>Kirill_V_Intel</dc:creator>
      <dc:date>2019-07-24T21:05:42Z</dc:date>
    </item>
    <item>
      <title>Quote:Voronin, Kirill (Intel)</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130871#M25596</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Voronin, Kirill (Intel) wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hi Ashirbad,&lt;/P&gt;&lt;P&gt;No, you shouldn't&amp;nbsp;use -mkl flag, since it works with LP64 interface only.&lt;/P&gt;&lt;P&gt;Basically, you need to link against the ILP64 interface so that MKL internally can find correct functionality working with 64-bit integers and you need -DMKL_ILP64 flag to have MKL_INT as 64-bit integer type. So, compiler options you have mentioned work with ILP64 interface&amp;nbsp;without any trouble. For example, -O2 option will affect only how &lt;STRONG&gt;your code&lt;/STRONG&gt; is compiled and not the performance of Intel MKL, since you have Intel MKL as a library and just link against it.&lt;BR /&gt;MKL Link Line Advisor thus only shows what you should &lt;STRONG&gt;add&lt;/STRONG&gt; to your compile and link line in order to use MKL.&lt;/P&gt;&lt;P&gt;Also, note that there are a lot of environment settings&amp;nbsp;which can affect performance. For example, for optimal performance with OpenMP threading, you need also to think about setting correct KMP_AFFINITY and numa control options.&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best,&lt;BR /&gt;Kirill&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot, Kirill, this is helpful.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Jul 2019 15:37:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Bug-in-mkl-sparse-d-mm/m-p/1130871#M25596</guid>
      <dc:creator>Mishra__Ashirbad</dc:creator>
      <dc:date>2019-07-25T15:37:33Z</dc:date>
    </item>
  </channel>
</rss>

