<?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: Re:Correct way to use the two-stage algorithm mkl_sparse_sypr in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375551#M32994</link>
    <description>&lt;P&gt;Hi Vidya,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My OS is ubuntu 20.04 (gcc 9.3). My application is a iterative numerical method that requires the computation of A' * A in each iteration. Thus the process is performed finite times and there is no need to run continuously. However, the matrix A could be large in many cases. If there are memory leaks the application is very likely to be killed before producing the final output.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The provided codes are just for illustration purpose. Just compile the codes and run on a computer you can observe the memory is rapidly consumed. Several remarks on the codes:&lt;/P&gt;
&lt;P&gt;1) I hope to reuse the storage of the matrix C in each loop. Therefore I do not call mkl_sparse_destroy(C).&lt;/P&gt;
&lt;P&gt;2) Upon calling mkl_sparse_sypr with request =&amp;nbsp;&lt;SPAN&gt;SPARSE_STAGE_FINALIZE_MULT and a precomputed C, I expect that MKL only updates the numeric value of C. In other words, in this case MKL thinks the symbolic multiplication is done and won't touch the non-zero pattern.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have no idea how MKL manages its internal memory. Thus the program may not work as I expect in remark 2).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Haoyang.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 08 Apr 2022 13:03:30 GMT</pubDate>
    <dc:creator>haoyang_liu</dc:creator>
    <dc:date>2022-04-08T13:03:30Z</dc:date>
    <item>
      <title>Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375223#M32984</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have an application to compute a series of sparse matrix products A' * A repeatedly. Each matrix A has the same non-zero pattern but different numeric values. After searching the document, the two-stage algorithm mkl_sparse_sypr seems to be helpful in this scenario. However, I failed to figure out the correct way to use the routine:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;method 1:&lt;/P&gt;
&lt;P&gt;1) Call mkl_sparse_sypr with request = SPARSE_STAGE_NNZ_COUNT and request = SPARSE_STAGE_FINALIZE_MULT_NO_VAL for the first A.&lt;/P&gt;
&lt;P&gt;2) Call mkl_sparse_sypr with request = SPARSE_STAGE_FINALIZE_MULT for the first and the rest matrices.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The call to mkl_sparse_sypr with request = SPARSE_STAGE_FINALIZE_MULT_NO_VAL fails with error code "SPARSE_STATUS_NOT_SUPPORTED"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;method 2:&lt;/P&gt;
&lt;P&gt;1) Call mkl_sparse_sypr with request = SPARSE_STAGE_NNZ_COUNT for the first A.&lt;/P&gt;
&lt;P&gt;2) Call mkl_sparse_sypr with request = SPARSE_STAGE_FINALIZE_MULT for the first and the rest matrices.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The results are correct for each A and the computation cost is reduced from the second matrix. However, it seems that there are memory leakages as more matrices are processed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am using oneAPI 2022.0. Any suggestions?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My testing codes:&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include "mkl_spblas.h"

#define M 20
#define N 10

int main(){
    MKL_INT ir[] = {0, 1, 2, 3, 5, 6, 7, 9, 9, 9, 11, 12, 13, 14, 16, 17, 19, 19, 19, 20, 20};
    MKL_INT jc[] = {6, 0, 3, 3, 9, 5, 7, 4, 5, 0, 2, 5, 1, 2, 3, 7, 5, 2, 8, 9};
    double pr[M];

    sparse_matrix_t A, B, C;
    sparse_status_t stat;
    struct matrix_descr descrB;
    descrB.type = SPARSE_MATRIX_TYPE_DIAGONAL;
    descrB.diag = SPARSE_DIAG_UNIT;

    int init = 0;

    while (1){
        // create random pr
        for (int i = 0; i &amp;lt; M; ++i){
            pr[i] = 1.0 * rand() / RAND_MAX;
        }

        // create A
        stat = mkl_sparse_d_create_csr(
                &amp;amp;A,
                SPARSE_INDEX_BASE_ZERO,
                M,
                N,
                ir,
                ir + 1,
                jc,
                pr);

        if (stat != SPARSE_STATUS_SUCCESS){
            printf("create csr error.\n");
            return 1;
        }

        if (!init){
            stat = mkl_sparse_sypr(SPARSE_OPERATION_TRANSPOSE, A, B, descrB, &amp;amp;C, SPARSE_STAGE_NNZ_COUNT);
            if (stat != SPARSE_STATUS_SUCCESS){
                printf("sypr stage nnz_count error.\n");
                return 1;
            }

            //stat = mkl_sparse_sypr(SPARSE_OPERATION_TRANSPOSE, A, B, descrB, &amp;amp;C, SPARSE_STAGE_FINALIZE_MULT_NO_VAL);
            //if (stat != SPARSE_STATUS_SUCCESS){
            //    printf("sypr stage finalize_mult_no_val error.\n");
            //    return 1;
            //}

            init = 1;
        }

        stat = mkl_sparse_sypr(SPARSE_OPERATION_TRANSPOSE, A, B, descrB, &amp;amp;C, SPARSE_STAGE_FINALIZE_MULT);
        if (stat != SPARSE_STATUS_SUCCESS){
            printf("sypr stage finalize_mult error.\n");
            return 1;
        }

        // destroy
        mkl_sparse_destroy(A);
        A = NULL;
    }

    return 0;
}
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Apr 2022 14:30:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375223#M32984</guid>
      <dc:creator>haoyang_liu</dc:creator>
      <dc:date>2022-04-07T14:30:06Z</dc:date>
    </item>
    <item>
      <title>Re:Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375537#M32992</link>
      <description>&lt;P&gt;Hi,&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;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Could you please let us know the environment details (OS) on which you are running your application so that we can check this issue from our end as well?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Please let us know how did you observe the memory leaks? Is it like, after running for some time is it getting killed?&lt;/P&gt;&lt;P&gt;From the provided code, we could see that the mkl calls are placed in while(1) (infinite loop), Could you please confirm whether your application needed to be run continuously and there is no certain count on how many times the process should be done?&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;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Fri, 08 Apr 2022 11:46:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375537#M32992</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-04-08T11:46:26Z</dc:date>
    </item>
    <item>
      <title>Re: Re:Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375551#M32994</link>
      <description>&lt;P&gt;Hi Vidya,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My OS is ubuntu 20.04 (gcc 9.3). My application is a iterative numerical method that requires the computation of A' * A in each iteration. Thus the process is performed finite times and there is no need to run continuously. However, the matrix A could be large in many cases. If there are memory leaks the application is very likely to be killed before producing the final output.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The provided codes are just for illustration purpose. Just compile the codes and run on a computer you can observe the memory is rapidly consumed. Several remarks on the codes:&lt;/P&gt;
&lt;P&gt;1) I hope to reuse the storage of the matrix C in each loop. Therefore I do not call mkl_sparse_destroy(C).&lt;/P&gt;
&lt;P&gt;2) Upon calling mkl_sparse_sypr with request =&amp;nbsp;&lt;SPAN&gt;SPARSE_STAGE_FINALIZE_MULT and a precomputed C, I expect that MKL only updates the numeric value of C. In other words, in this case MKL thinks the symbolic multiplication is done and won't touch the non-zero pattern.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have no idea how MKL manages its internal memory. Thus the program may not work as I expect in remark 2).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Haoyang.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 08 Apr 2022 13:03:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375551#M32994</guid>
      <dc:creator>haoyang_liu</dc:creator>
      <dc:date>2022-04-08T13:03:30Z</dc:date>
    </item>
    <item>
      <title>Re: Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375617#M32995</link>
      <description>&lt;P&gt;I am a little confused why you are using the symmetric product (C = A' * B * A&amp;nbsp; where B is symmetric)&amp;nbsp; mkl_sparse_sypr() to do the C = A'*A operation.&amp;nbsp; It would be better to use the sparse matric multiplication (mkl_sparse_sp2m()&amp;nbsp; C = op(A) * op(B) ) which also has the two stage support as in symmetric product .&amp;nbsp; Technically we also have mkl_sparse_syrk() which directly does your operation C = op(A) * A but it doesn't have the same two stage support.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Apr 2022 15:46:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375617#M32995</guid>
      <dc:creator>Spencer_P_Intel</dc:creator>
      <dc:date>2022-04-08T15:46:47Z</dc:date>
    </item>
    <item>
      <title>Re: Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375798#M32997</link>
      <description>&lt;P&gt;Hi Spencer,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've tried the routine mkl_sparse_sp2m() and it works flawlessly in my application - no memory leaks are observed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My only concern is that mkl_sparse_sp2m() is designed for general sparse marix multiplication thus the output C is usually a general matrix. However A' * A results in a symmetric matrix and there is no need to compute half of the pattern/values. I am not sure whether mkl_sparse_sp2m() would detect the symmetry and automatically reduce the computational cost. On the other hand, mkl_sparse_sypr() calculates symmetric product and I expect to save some time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The reason not to use mkl_sparse_syrk() is that it does not support the two-stage algorithm.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Haoyang&lt;/P&gt;</description>
      <pubDate>Sat, 09 Apr 2022 08:18:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1375798#M32997</guid>
      <dc:creator>haoyang_liu</dc:creator>
      <dc:date>2022-04-09T08:18:30Z</dc:date>
    </item>
    <item>
      <title>Re:Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1376010#M32999</link>
      <description>&lt;P&gt;Hi Haoyang,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Thanks for sharing the details.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;We are able to reproduce the issue with respect to mkl_sparse_sypr() function call and could see that the program is getting killed after some time. (will let you know regarding this)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;gt;&lt;I&gt;I've tried the routine mkl_sparse_sp2m() and it works flawlessly in my application - no memory leaks are observed&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Meanwhile, could you please provide us with the sample reproducer with respect to mkl_sparse_sp2m() function if possible? (Just want to see what actually differs and causes the memory leaks)&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, 11 Apr 2022 04:53:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1376010#M32999</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-04-11T04:53:33Z</dc:date>
    </item>
    <item>
      <title>Re: Re:Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1376018#M33000</link>
      <description>&lt;P&gt;Hi Vidya,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is my sample code:&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include "mkl_spblas.h"

#define M 20
#define N 10

int main(){
    MKL_INT ir[] = {0, 1, 2, 3, 5, 6, 7, 9, 9, 9, 11, 12, 13, 14, 16, 17, 19, 19, 19, 20, 20};
    MKL_INT jc[] = {6, 0, 3, 3, 9, 5, 7, 4, 5, 0, 2, 5, 1, 2, 3, 7, 5, 2, 8, 9};
    double pr[M];

    sparse_matrix_t A, C;
    sparse_status_t stat;
    struct matrix_descr descrA;
    descrA.type = SPARSE_MATRIX_TYPE_GENERAL;

    int init = 0;

    while (1){
        // create random pr
        for (int i = 0; i &amp;lt; M; ++i){
            pr[i] = 1.0 * rand() / RAND_MAX;
        }

        // create A
        stat = mkl_sparse_d_create_csr(
                &amp;amp;A,
                SPARSE_INDEX_BASE_ZERO,
                M,
                N,
                ir,
                ir + 1,
                jc,
                pr);

        if (stat != SPARSE_STATUS_SUCCESS){
            printf("create csr error.\n");
            return 1;
        }

        if (!init){
            stat = mkl_sparse_sp2m(
                    SPARSE_OPERATION_TRANSPOSE, descrA, A,
                    SPARSE_OPERATION_NON_TRANSPOSE, descrA, A,
                    SPARSE_STAGE_NNZ_COUNT, &amp;amp;C);
            if (stat != SPARSE_STATUS_SUCCESS){
                printf("sypr stage nnz_count error.\n");
                return 1;
            }

            // note: if switch to sypr, the following operation
            // fails with stat = SPARSE_STATUS_NOT_SUPPORTED
            stat = mkl_sparse_sp2m(
                    SPARSE_OPERATION_TRANSPOSE, descrA, A,
                    SPARSE_OPERATION_NON_TRANSPOSE, descrA, A,
                    SPARSE_STAGE_FINALIZE_MULT_NO_VAL, &amp;amp;C);
            if (stat != SPARSE_STATUS_SUCCESS){
                printf("sypr stage finalize_mult_no_val error.\n");
                return 1;
            }

            init = 1;
        }

        stat = mkl_sparse_sp2m(
                SPARSE_OPERATION_TRANSPOSE, descrA, A,
                SPARSE_OPERATION_NON_TRANSPOSE, descrA, A,
                SPARSE_STAGE_FINALIZE_MULT, &amp;amp;C);
        if (stat != SPARSE_STATUS_SUCCESS){
            printf("sypr stage finalize_mult error.\n");
            return 1;
        }

        // destroy
        mkl_sparse_destroy(A);
        A = NULL;
    }

    return 0;
}
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Haoyang&lt;/P&gt;</description>
      <pubDate>Mon, 11 Apr 2022 05:13:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1376018#M33000</guid>
      <dc:creator>haoyang_liu</dc:creator>
      <dc:date>2022-04-11T05:13:34Z</dc:date>
    </item>
    <item>
      <title>Re: Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1376769#M33015</link>
      <description>&lt;P&gt;Hi Haoyang,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for the information.&lt;/P&gt;
&lt;P&gt;We are working on your issue, we will get back to you soon with an update.&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>Wed, 13 Apr 2022 07:01:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1376769#M33015</guid>
      <dc:creator>VidyalathaB_Intel</dc:creator>
      <dc:date>2022-04-13T07:01:56Z</dc:date>
    </item>
    <item>
      <title>Re:Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1378328#M33054</link>
      <description>&lt;P&gt;&lt;SPAN style="font-size: 12px;"&gt;Hello Haoyang,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px;"&gt;Thank you for contacting us. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif;"&gt;The root cause for memory leakage has been found, we are fixing it now. The fixed will be available in our future release. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif;"&gt;Currently, sp2m would be the best choice if 2-stage approach is required, and indeed it costs more computing time, since the full matrix is produced, not only one triangular (as it should be in sypr/syrk).&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif;"&gt;Best Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif;"&gt;Ruqiu&lt;/SPAN&gt;&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 20 Apr 2022 02:09:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1378328#M33054</guid>
      <dc:creator>Ruqiu_C_Intel</dc:creator>
      <dc:date>2022-04-20T02:09:27Z</dc:date>
    </item>
    <item>
      <title>Re: Re:Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1378369#M33055</link>
      <description>&lt;P&gt;Hi Ruqiu&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for the update. Look forward to the future release!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Haoyang&lt;/P&gt;</description>
      <pubDate>Wed, 20 Apr 2022 04:48:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1378369#M33055</guid>
      <dc:creator>haoyang_liu</dc:creator>
      <dc:date>2022-04-20T04:48:22Z</dc:date>
    </item>
    <item>
      <title>Re:Correct way to use the two-stage algorithm mkl_sparse_sypr</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1378977#M33062</link>
      <description>&lt;P&gt;Hi Haoyang,&lt;/P&gt;&lt;P&gt;Thank you again for posting your concern in the community. Please check the release notes for this fixed when future release is  available. &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;This issue is closing and we will no longer respond to this thread.&amp;nbsp;If you require additional assistance from Intel, please start a new thread.&amp;nbsp;Any further interaction in this thread will be considered community only.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Have a nice day!&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ruqiu&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Fri, 22 Apr 2022 04:40:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Correct-way-to-use-the-two-stage-algorithm-mkl-sparse-sypr/m-p/1378977#M33062</guid>
      <dc:creator>Ruqiu_C_Intel</dc:creator>
      <dc:date>2022-04-22T04:40:41Z</dc:date>
    </item>
  </channel>
</rss>

