<?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 Memory leaks while using Intel MKL DSS subroutines in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Memory-leaks-while-using-Intel-MKL-DSS-subroutines/m-p/784752#M1754</link>
    <description>this is the expected behaviour - please check with user's guide - "Using memory management"&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 13 Jul 2012 00:54:04 GMT</pubDate>
    <dc:creator>Gennady_F_Intel</dc:creator>
    <dc:date>2012-07-13T00:54:04Z</dc:date>
    <item>
      <title>Memory leaks while using Intel MKL DSS subroutines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Memory-leaks-while-using-Intel-MKL-DSS-subroutines/m-p/784751#M1753</link>
      <description>Hello,&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I am using Intel MKL DSS subroutines to solve a sparse symmetric matrix. Attached is the sample program that I ran. I get memory leaks at the end of the application run. Do I need to use some function in addition to dss_delete() to clean up memory used by DSS subroutines. Please help!&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;Vijay&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;/*&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;********************************************************************************&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;*  Content : MKL DSS C example&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;*&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;********************************************************************************&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;*/&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/*&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;**&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;** Example program to solve symmetric positive definite system of equations.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;**&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;*/&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include&lt;STDIO.H&gt;&lt;/STDIO.H&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include&lt;STDLIB.H&gt;&lt;/STDLIB.H&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;IOSTREAM&gt;&lt;/IOSTREAM&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include&lt;MATH.H&gt;&lt;/MATH.H&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;MAP&gt;&lt;/MAP&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;COMPLEX&gt;&lt;/COMPLEX&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;SET&gt;&lt;/SET&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;FSTREAM&gt;&lt;/FSTREAM&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;using namespace std;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include "mkl_dss.h"&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include "mkl_types.h"&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/*&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;** Define the array and rhs vectors&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;*/&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#define NROWS 		5&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#define NCOLS 		5&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#define NNONZEROS 	9&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#define NRHS 		1&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;static const MKL_INT nRows = NROWS;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;static const MKL_INT nCols = NCOLS;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;static const MKL_INT nNonZeros = NNONZEROS;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;static const MKL_INT nRhs = NRHS;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;static _INTEGER_t rowIndex[NROWS + 1] = { 1, 6, 7, 8, 9, 10 };&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;static _INTEGER_t columns[NNONZEROS] = { 1, 2, 3, 4, 5, 2, 3, 4, 5 };&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;static _DOUBLE_PRECISION_t values[NNONZEROS] =&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; { 9, 1.5, 6, .75, 3, 0.5, 12, .625, 16 };&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;static _DOUBLE_PRECISION_t rhs[NCOLS] = { 1, 2, 3, 4, 5 };&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;MKL_INT&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;main ()&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;{&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; #ifdef _DEBUG&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  _CrtMemState MemState;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  _CrtMemCheckpoint(&amp;amp;MemState);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  // Use this method to check for memory leaks:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  // If you get the following leak message upon closing the app:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  // {204} normal block at 0x002F5610, 24 bytes long.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  // Data: &amp;lt; c/ Xb/ d/   &amp;gt; 08 63 2F 00 58 62 2F 00 10 64 2F 00 CD CD CD CD&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  // Then you should call:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  //_CrtSetBreakAlloc(4872L);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  //&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  //_CrtSetBreakAlloc(1000);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  //_CrtSetBreakAlloc(3411);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  _CrtSetBreakAlloc(215);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; #endif&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; MKL_INT i;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; /* Allocate storage for the solver handle and the right-hand side. */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; _DOUBLE_PRECISION_t solValues[NROWS];&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; _MKL_DSS_HANDLE_t handle;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; _INTEGER_t error;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; _CHARACTER_t statIn[] = "determinant";&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; _DOUBLE_PRECISION_t statOut[5];&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; MKL_INT opt = MKL_DSS_DEFAULTS;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; MKL_INT sym = MKL_DSS_SYMMETRIC;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; MKL_INT type = MKL_DSS_POSITIVE_DEFINITE;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* --------------------- */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* Initialize the solver */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* --------------------- */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; error = dss_create (handle, opt);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; if (error != MKL_DSS_SUCCESS)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  goto printError;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------------------------------- */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* Define the non-zero structure of the matrix */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------------------------------- */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; error = dss_define_structure (handle, sym, rowIndex, nRows, nCols,&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;				columns, nNonZeros);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; if (error != MKL_DSS_SUCCESS)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  goto printError;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------ */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* Reorder the matrix */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------ */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; error = dss_reorder (handle, opt, 0);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; if (error != MKL_DSS_SUCCESS)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  goto printError;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------ */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* Factor the matrix */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------ */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; error = dss_factor_real (handle, type, values);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; if (error != MKL_DSS_SUCCESS)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  goto printError;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------------ */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* Get the solution vector */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------------ */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; error = dss_solve_real (handle, opt, rhs, nRhs, solValues);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; if (error != MKL_DSS_SUCCESS)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  goto printError;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ------------------------ */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* Get the determinant (not for a diagonal matrix) */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/*--------------------------*/&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; if (nRows &amp;lt; nNonZeros)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  {&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;   error = dss_statistics (handle, opt, statIn, statOut);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;   if (error != MKL_DSS_SUCCESS)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	goto printError;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/*-------------------------*/&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* print determinant */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/*-------------------------*/&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;   printf (" determinant power is %g \\n", statOut[0]);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;   printf (" determinant base is %g \\n", statOut[1]);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;   printf (" Determinant is %g \\n", (pow (10.0, statOut[0])) * statOut[1]);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  }&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* -------------------------- */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* Deallocate solver storage */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* -------------------------- */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; error = dss_delete (handle, opt);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; if (error != MKL_DSS_SUCCESS)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  goto printError;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ---------------------- */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* Print solution vector */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;/* ---------------------- */&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; printf (" Solution array: ");&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; for (i = 0; i &amp;lt; nCols; i++)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  printf (" %g", solValues&lt;I&gt;);&lt;/I&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; printf ("\\n");&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; #ifdef _DEBUG&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  _CrtMemDumpAllObjectsSince(&amp;amp;MemState);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  //_CrtDumpMemoryLeaks();&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; #endif &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; exit (0);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;printError:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; printf ("Solver returned error code %d\\n", error);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; exit (1);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;}&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 12 Jul 2012 19:29:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Memory-leaks-while-using-Intel-MKL-DSS-subroutines/m-p/784751#M1753</guid>
      <dc:creator>vijay1</dc:creator>
      <dc:date>2012-07-12T19:29:19Z</dc:date>
    </item>
    <item>
      <title>Memory leaks while using Intel MKL DSS subroutines</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Memory-leaks-while-using-Intel-MKL-DSS-subroutines/m-p/784752#M1754</link>
      <description>this is the expected behaviour - please check with user's guide - "Using memory management"&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 13 Jul 2012 00:54:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Memory-leaks-while-using-Intel-MKL-DSS-subroutines/m-p/784752#M1754</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2012-07-13T00:54:04Z</dc:date>
    </item>
  </channel>
</rss>

