<?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 How did you draw the in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075741#M59823</link>
    <description>&lt;P&gt;How did you draw the conclusion that the buffer is not destroyed?&lt;/P&gt;</description>
    <pubDate>Thu, 28 Jul 2016 23:06:25 GMT</pubDate>
    <dc:creator>Ravi_N_Intel</dc:creator>
    <dc:date>2016-07-28T23:06:25Z</dc:date>
    <item>
      <title>Problem with free</title>
      <link>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075740#M59822</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;

&lt;P&gt;I wrote following application and ran on Xeon Phi. As you can see, the function including offloads is invoked 5 times. At first time, memory is allocated to arrays A, B, and C and the memory reused when the function is reinvoked.&lt;/P&gt;

&lt;P&gt;Please let me know why memory is not freed by offload_transfer.&lt;/P&gt;

&lt;P&gt;//////////////////////////////////////////////&lt;/P&gt;

&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;string.h&amp;gt;&lt;/P&gt;

&lt;P&gt;#include "offload.h"&lt;/P&gt;

&lt;P&gt;#include &amp;lt;getopt.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;unistd.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;stdlib.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;sys/time.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;time.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;math.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;mkl.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;miclib.h&amp;gt;&lt;/P&gt;

&lt;P&gt;#define&amp;nbsp;&amp;nbsp; &amp;nbsp;ALLOC&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;alloc_if(1)&lt;BR /&gt;
	#define FREE&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;free_if(1)&lt;BR /&gt;
	#define RETAIN&amp;nbsp;&amp;nbsp; &amp;nbsp;free_if(0)&lt;BR /&gt;
	#define REUSE &amp;nbsp; alloc_if(0)&lt;/P&gt;

&lt;P&gt;void gemm_kernel_mic_single_fit(&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const int M, const int N, const int K,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const double alpha,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const double *A, const int lda,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const double *B, const int ldb,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const double beta,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double *C, const int ldc)&lt;BR /&gt;
	{ &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; // transfer matrices A, B and C to device memory&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;#pragma offload_transfer target (mic) in(alpha, beta,&amp;nbsp;&amp;nbsp; &amp;nbsp;M, N, K : ALLOC RETAIN) &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; #pragma offload_transfer target (mic) in(B:length(K * N) ALLOC RETAIN)&lt;BR /&gt;
	&amp;nbsp; #pragma offload_transfer target (mic) in(A:length(M * K) ALLOC RETAIN)&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;&lt;BR /&gt;
	&amp;nbsp; #pragma offload_transfer target (mic) in(C:length(M * N) ALLOC RETAIN)&lt;/P&gt;

&lt;P&gt;&amp;nbsp; #pragma offload target (mic) &amp;nbsp;&amp;nbsp; &amp;nbsp;in(M, N, K, alpha, beta : REUSE FREE)\&lt;BR /&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;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;nocopy(A : length(M * K) REUSE FREE) \&lt;BR /&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;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;nocopy(B : length(K * N) REUSE FREE) \&lt;BR /&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;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;nocopy(C : length(M * N) REUSE RETAIN)&lt;BR /&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;&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;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cblas_dgemm(CblasRowMajor, CblasNoTrans,CblasNoTrans,&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;M, N, K, alpha, A, K,&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;B, N, beta, C, N);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; #pragma offload_wait target (mic) stream(0)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; // recv results&lt;BR /&gt;
	&amp;nbsp; #pragma offload_transfer target (mic) out(C : length(M * N) REUSE FREE)&lt;BR /&gt;
	&amp;nbsp; #pragma offload_wait target (mic) stream(0)&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;main()&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int i,j,m,n,k;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double *a,*b,*c;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;m=n=k= 11000;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;a = (double *)malloc(m*k*sizeof(double));&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;b = (double *)malloc(n*k*sizeof(double));&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;c = (double *)malloc(m*n*sizeof(double));&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;for(i = 0; i&amp;lt;m*n; i++)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;a&lt;I&gt; = rand() % (m*k);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;b&lt;I&gt; = rand() % (m*k);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;c&lt;I&gt; = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for(i=0;i&amp;lt;5;i++)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;gemm_kernel_mic_single_fit(m, n, k, 1, a, k, b, n, 1, c, n);&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;////////////////////////////////////////////&lt;/P&gt;</description>
      <pubDate>Thu, 28 Jul 2016 14:19:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075740#M59822</guid>
      <dc:creator>Hamidreza_K_</dc:creator>
      <dc:date>2016-07-28T14:19:39Z</dc:date>
    </item>
    <item>
      <title>How did you draw the</title>
      <link>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075741#M59823</link>
      <description>&lt;P&gt;How did you draw the conclusion that the buffer is not destroyed?&lt;/P&gt;</description>
      <pubDate>Thu, 28 Jul 2016 23:06:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075741#M59823</guid>
      <dc:creator>Ravi_N_Intel</dc:creator>
      <dc:date>2016-07-28T23:06:25Z</dc:date>
    </item>
    <item>
      <title>You can monitor MIC using</title>
      <link>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075742#M59824</link>
      <description>&lt;P&gt;You can monitor MIC using "micsmc" or call following function at the beginning of each iteration to read available memory. Buffers are destroyed, but the memory is not released.&lt;/P&gt;

&lt;P&gt;//////////////////////////////////////////////&lt;/P&gt;

&lt;P&gt;uint32_t read_mic_mem_size()&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;struct mic_devices_list *mdl;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; int ret = mic_get_devices(&amp;amp;mdl);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; if (ret == E_MIC_DRIVER_NOT_LOADED)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Error: The driver is not loaded!");&lt;BR /&gt;
	&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; else if (ret == E_MIC_ACCESS)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Error: Access is denied to the driver!");&lt;BR /&gt;
	&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; else if (ret != E_MIC_SUCCESS)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Failed to get cards list.");&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; int card;&lt;BR /&gt;
	&amp;nbsp; if (mic_get_device_at_index(mdl, 0, &amp;amp;card) != E_MIC_SUCCESS)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;mic_free_devices(mdl);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Error: Failed to get card!");&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; (void)mic_free_devices(mdl);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; struct mic_device *mMdh;&lt;BR /&gt;
	&amp;nbsp; if (mic_open_device(&amp;amp;mMdh, card) != E_MIC_SUCCESS)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Error: Failed to open card.");&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; uint32_t device_type;&lt;BR /&gt;
	&amp;nbsp; if (mic_get_device_type(mMdh, &amp;amp;device_type) != E_MIC_SUCCESS)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;(void)mic_close_device(mMdh);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Error: Failed to get device type.");&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; if (device_type != KNC_ID)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;(void)mic_close_device(mMdh);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Error: Unknown device type.");&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; struct mic_memory_util_info *minfo;&lt;BR /&gt;
	&amp;nbsp; uint32_t msize;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; if (mic_get_memory_utilization_info(mMdh, &amp;amp;minfo) != E_MIC_SUCCESS)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Failed to get memory utilization info.\n");&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; if (mic_get_available_memory_size(minfo, &amp;amp;msize) != E_MIC_SUCCESS)&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Failed to get thermal information.\n");&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; printf("The memory size is %lu.\n", msize);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; (void)mic_close_device(mMdh);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; return msize;&lt;/P&gt;

&lt;P&gt;}&lt;/P&gt;

&lt;P&gt;//////////////////////////////////////////////////////////////&lt;/P&gt;</description>
      <pubDate>Fri, 29 Jul 2016 08:52:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075742#M59824</guid>
      <dc:creator>Hamidreza_K_</dc:creator>
      <dc:date>2016-07-29T08:52:04Z</dc:date>
    </item>
    <item>
      <title>The runtime library COI which</title>
      <link>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075743#M59825</link>
      <description>&lt;P&gt;The runtime library COI which handles all the buffers/memory keeps a pool of memory to use for buffer allocation. This memory is not released but re-used for performance reasons&lt;/P&gt;</description>
      <pubDate>Fri, 29 Jul 2016 19:13:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075743#M59825</guid>
      <dc:creator>Ravi_N_Intel</dc:creator>
      <dc:date>2016-07-29T19:13:32Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075744#M59826</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;Could you tell me how the memory can be forced to release space instead of keeping it&lt;/P&gt;</description>
      <pubDate>Sat, 30 Jul 2016 11:42:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075744#M59826</guid>
      <dc:creator>Hamidreza_K_</dc:creator>
      <dc:date>2016-07-30T11:42:26Z</dc:date>
    </item>
    <item>
      <title>Let me preface this by</title>
      <link>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075745#M59827</link>
      <description>&lt;P&gt;Let me preface this by stating I have not compiled and tested your code. Ergo, my comments are unfounded (merely observations)&lt;/P&gt;

&lt;P&gt;Your offload_transfer&amp;nbsp;has: in(alpha, beta,&amp;nbsp;&amp;nbsp;&amp;nbsp; M, N, K : ALLOC RETAIN)&lt;/P&gt;

&lt;P&gt;Whereas,&lt;/P&gt;

&lt;P&gt;your offload has: in(M, N, K, alpha, beta : REUSE FREE)&lt;/P&gt;

&lt;P&gt;IOW, it does not have nocopy, as do the A, B and C arguments.&lt;/P&gt;

&lt;P&gt;Also note that the argument list of the offload&amp;nbsp;is not in the same order as in the offload_transfer. as to if this makes a difference for your memory "leak" (or unintended misuse) I cannot say.&lt;/P&gt;

&lt;P&gt;Please test by making argument list in same order and by use of nocopy.&lt;/P&gt;

&lt;P&gt;Second observation,&lt;/P&gt;

&lt;P&gt;Your offload is neither asynchronous (no use of signal), nor using stream (see &lt;A href="https://software.intel.com/en-us/node/583657"&gt;this&lt;/A&gt;). Yet your code (following the first offload) appears to be using stream (as well as being no-asynchronous).&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 30 Jul 2016 16:35:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075745#M59827</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2016-07-30T16:35:28Z</dc:date>
    </item>
    <item>
      <title>Currently we don't have a</title>
      <link>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075746#M59828</link>
      <description>&lt;P&gt;Currently we don't have a mechanism to free memory until the end of the program as we don't know when the last offload occurs.&lt;/P&gt;</description>
      <pubDate>Mon, 01 Aug 2016 17:36:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Problem-with-free/m-p/1075746#M59828</guid>
      <dc:creator>Ravi_N_Intel</dc:creator>
      <dc:date>2016-08-01T17:36:15Z</dc:date>
    </item>
  </channel>
</rss>

