<?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 My suspicion is the error in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015271#M35801</link>
    <description>&lt;P&gt;My suspicion is the error relates to &lt;STRONG&gt;clusters &lt;/STRONG&gt;and its use in &lt;STRONG&gt;out() &lt;/STRONG&gt;but without any host-side allocation.&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 17 Jul 2015 15:24:00 GMT</pubDate>
    <dc:creator>Kevin_D_Intel</dc:creator>
    <dc:date>2015-07-17T15:24:00Z</dc:date>
    <item>
      <title>offload error: cannot release buffer memory on device 0 (error code 14)</title>
      <link>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015269#M35799</link>
      <description>&lt;P&gt;I need your help.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I tried to run K-means algorithm on Xeon Phi by using offload mode.&lt;/P&gt;

&lt;P&gt;But when i tried to get into offload region with the clause '#pragma offload ~~ (as attached pic 1) ' ,&lt;/P&gt;

&lt;P&gt;i got an erorr 'offload error: cannot release buffer memory on device 0 (error code 14)' .&lt;/P&gt;

&lt;P&gt;I have no idea to solve this problem, and i even cannot find any previous example similar to my problem on google.&lt;/P&gt;

&lt;P&gt;I saw offload report by using 'export OFFLOAD_REPORT=3', but i couldn't get any hints.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;plz help me !&lt;/P&gt;

&lt;P&gt;regards&lt;/P&gt;

&lt;P&gt;TaeHyeok, Jang&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jul 2015 12:03:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015269#M35799</guid>
      <dc:creator>TaeHyeok_J_</dc:creator>
      <dc:date>2015-07-17T12:03:55Z</dc:date>
    </item>
    <item>
      <title>I cannot see the entire</title>
      <link>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015270#M35800</link>
      <description>&lt;P&gt;I cannot see the entire offload construct in your code and am unable to re-create the error in my mockup of what portion I can see. Can you attach the complete program that is failing so we can investigate using that?&lt;/P&gt;

&lt;P&gt;Also, please let us know what version of the C++ compiler and MPSS you are using. Thank you.&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jul 2015 15:03:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015270#M35800</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2015-07-17T15:03:00Z</dc:date>
    </item>
    <item>
      <title>My suspicion is the error</title>
      <link>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015271#M35801</link>
      <description>&lt;P&gt;My suspicion is the error relates to &lt;STRONG&gt;clusters &lt;/STRONG&gt;and its use in &lt;STRONG&gt;out() &lt;/STRONG&gt;but without any host-side allocation.&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jul 2015 15:24:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015271#M35801</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2015-07-17T15:24:00Z</dc:date>
    </item>
    <item>
      <title>#include &lt;stdio.h&gt;</title>
      <link>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015272#M35802</link>
      <description>&lt;P&gt;/* jth_off_kmeans.c */&amp;nbsp;&lt;/P&gt;

&lt;P&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;math.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;omp.h&amp;gt;&lt;BR /&gt;
	#include "kmeans_1d.h"&lt;/P&gt;

&lt;P&gt;#include "offload.h"&lt;/P&gt;

&lt;P&gt;#define ALLOC alloc_if(1) free_if(0)&lt;BR /&gt;
	#define FREE alloc_if(0) free_if(1)&lt;BR /&gt;
	#define REUSE alloc_if(0) free_if(0)&lt;/P&gt;

&lt;P&gt;#ifndef MIC_DEV&lt;BR /&gt;
	#define MIC_DEV 1&lt;BR /&gt;
	#endif&lt;/P&gt;

&lt;P&gt;__declspec(target(mic))&lt;BR /&gt;
	__inline static // O(n)&lt;BR /&gt;
	float* compute_dist(int numdim, int numobjs,&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; float *objects, // objs [numdim][numobjs]&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; float *clusters, // centroid [numclusters][numdim]&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; float *dist_new,&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; int cluster_num&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; )&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int i, j;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int jth_temp = 0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #pragma omp parallel for\&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private(j)\&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; shared(dist_new)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;numobjs;j++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dist_new&lt;J&gt; = 0;&lt;/J&gt;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // dist calculation&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numdim;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #pragma omp parallel for\&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; private(j)\&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; shared(dist_new, objects, clusters)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;numobjs;j++)&lt;BR /&gt;
	&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dist_new&lt;J&gt;+=(objects[i*numobjs+j]-clusters[cluster_num*numdim+i])*(objects[i*numobjs+j]-clusters[cluster_num*numdim+i]);&lt;BR /&gt;
	&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; }&lt;/J&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// sqrt operation&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #pragma omp parallel for\&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private(i)\&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; shared(dist_new)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numobjs;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dist_new&lt;I&gt; = sqrt(dist_new&lt;I&gt;);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return dist_new;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;float* jth_off_kmeans(float *objects,// [numobjs][numdim],&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int numdim,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int numobjs,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int numclusters,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float threshold,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int *membership, // [numobjs]&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int *loop_iterations,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int xeon_threads)&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* var declartion */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int i, j;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int num_of_iterations = 0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int xeon_threads_num = xeon_threads;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; char signal_1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; char signal_2;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; char signal_3;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; char signal_4;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *clusters;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *dist_new;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *dist_old;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *dist_tmp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *new_clusters;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int *clusters_size;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int *membership_xeon_phi;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("test 01\n");&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("test 02\n");&lt;/P&gt;

&lt;P&gt;#pragma offload target(mic:MIC_DEV) \&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; signal(&amp;amp;signal_3) \&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in(objects : length(numobjs*numdim) alloc_if(1) free_if(0))\&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nocopy(dist_new, dist_old, dist_tmp, new_clusters, clusters_size, membership_xeon_phi : alloc_if(0) free_if(0))\&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out(clusters : length(numclusters*numdim))&lt;BR /&gt;
	{ /* start of Xeon Phi section */&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("test 02.4\n");&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* set the number of xeon phi threads */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; omp_set_num_threads(xeon_threads_num);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; membership_xeon_phi = (int*)malloc(numobjs*sizeof(int));&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numobjs;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; membership_xeon_phi&lt;I&gt; = 0;&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* var declaration */&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float delta;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("test 02.5\n");&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* memory allocation */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clusters = (float*)malloc(numclusters*numdim*sizeof(float));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert(clusters != NULL);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new_clusters = (float*)malloc(numclusters*numdim*sizeof(float));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert(new_clusters != NULL);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clusters_size = (int*)malloc(numclusters*sizeof(int));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert(clusters_size != NULL);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dist_new = (float*)malloc(numobjs*sizeof(float));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert(dist_new != NULL);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dist_old = (float*)malloc(numobjs*sizeof(float));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert(dist_old != NULL);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dist_tmp = (float*)malloc(numobjs*sizeof(float));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert(dist_tmp != NULL);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; printf("test 03\n");&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* initialization of clusters_size[], new_clusters[] */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numclusters;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clusters_size&lt;I&gt; = 0;&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;numdim;j++)&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; new_clusters[i*numdim+j] = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* initialization of centroids as random objects */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numdim;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;numclusters;j++)&lt;BR /&gt;
	&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clusters[numdim*j+i] = objects[i*numobjs+j];&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp;// &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;numdim;j++)&lt;BR /&gt;
	&amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clusters_phi&lt;J&gt; = clusters[0*numclusters+j];&lt;/J&gt;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* initialization of dist_new with centroid[0] */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dist_new = compute_dist(numdim, numobjs, objects, clusters, dist_new, 0);&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* initialization of dist_old as a dist_max */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float dist_max = dist_new[0];&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numobjs;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(dist_max&amp;lt;dist_new&lt;I&gt;)&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; dist_max = dist_new&lt;I&gt;;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numobjs;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dist_old&lt;I&gt; = dist_max;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delta = threshold+1; // temp initialization for enterting while loop&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int temp = 0 ;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("test 04\n");&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(num_of_iterations++&amp;lt;5)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delta = 0.0; // var checking for proportion of changed objs&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=1;i&amp;lt;numclusters;i++)&lt;BR /&gt;
	&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int cluster_num;&lt;/P&gt;

&lt;P&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; cluster_num = i;&lt;/P&gt;

&lt;P&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; /* swap dist_tmp and dist_new */&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; for(j=0;j&amp;lt;numobjs;j++)&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; dist_tmp&lt;J&gt; = dist_new&lt;J&gt;;&lt;/J&gt;&lt;/J&gt;&lt;/P&gt;

&lt;P&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; dist_new = compute_dist(numdim, numobjs, objects, clusters, dist_new, cluster_num);&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #pragma omp parallel for\&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; private(j)\&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; shared(membership_xeon_phi, dist_old)\&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; reduction(+:delta)&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; for(j=0;j&amp;lt;numobjs;j++)&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; {&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; if(dist_tmp&lt;J&gt;&amp;lt;dist_old&lt;J&gt;)&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; {&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; membership_xeon_phi&lt;J&gt; = i; // i means cluster index&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; dist_old&lt;J&gt; = dist_tmp&lt;J&gt;;&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; delta++;&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; }&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; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/J&gt;&lt;/J&gt;&lt;/J&gt;&lt;/J&gt;&lt;/J&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* determine clusters_size */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numobjs;i++)&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; clusters_size[membership_xeon_phi&lt;I&gt;]++;&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* centroids recalculation */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numdim;i++)&lt;BR /&gt;
	&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;numobjs;j++)&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; {&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; new_clusters[membership_xeon_phi&lt;J&gt;*numdim+i] += objects[i*numobjs+j];&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; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/J&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numclusters;i++)&lt;BR /&gt;
	&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;numdim;j++)&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; {&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; clusters[i*numdim+j] = new_clusters[i*numdim+j]/clusters_size&lt;I&gt;;&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; new_clusters[i*numdim+j] = 0; // set back to 0&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; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delta = (delta)/(numobjs*numclusters);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numclusters;i++)&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; clusters_size&lt;I&gt; = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free(clusters_size);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free(new_clusters);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free(dist_new);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free(dist_old);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free(dist_tmp);&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	} /* end of Xeon Phi section */&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #pragma offload_wait target(mic:MIC_DEV) wait(&amp;amp;signal_3)&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("\n");&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *loop_iterations = num_of_iterations;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return clusters;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jul 2015 16:28:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015272#M35802</guid>
      <dc:creator>TaeHyeok_J_</dc:creator>
      <dc:date>2015-07-17T16:28:00Z</dc:date>
    </item>
    <item>
      <title>#include &lt;stdio.h&gt;</title>
      <link>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015273#M35803</link>
      <description>&lt;P&gt;/* jth_off_main.c */&amp;nbsp;&lt;/P&gt;

&lt;P&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;string.h&amp;gt; &amp;nbsp; &amp;nbsp; /* strtok() */&lt;BR /&gt;
	#include &amp;lt;sys/types.h&amp;gt; &amp;nbsp;/* open() */&lt;BR /&gt;
	#include &amp;lt;sys/stat.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;fcntl.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;unistd.h&amp;gt; &amp;nbsp; &amp;nbsp; /* getopt() */&lt;/P&gt;

&lt;P&gt;#include &amp;lt;omp.h&amp;gt;&lt;BR /&gt;
	int &amp;nbsp; &amp;nbsp; &amp;nbsp;_debug;&lt;BR /&gt;
	#include "kmeans_1d.h"&lt;/P&gt;

&lt;P&gt;/*---&amp;lt; usage() &amp;gt;------------------------------------------------------------*/&lt;BR /&gt;
	static void usage(char *argv0, float threshold) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; char *help =&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Usage: %s [switches] -i filename -n num_clusters\n"&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; " &amp;nbsp; &amp;nbsp; &amp;nbsp; -i filename &amp;nbsp; &amp;nbsp;: file containing data to be clustered\n"&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; " &amp;nbsp; &amp;nbsp; &amp;nbsp; -b &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : input file is in binary format (default no)\n"&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; " &amp;nbsp; &amp;nbsp; &amp;nbsp; -n num_clusters: number of clusters (K must &amp;gt; 1)\n"&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; " &amp;nbsp; &amp;nbsp; &amp;nbsp; -t threshold &amp;nbsp; : threshold value (default %.4f)\n"&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; -p nproc &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : number of threads (default system allocated)\n"&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; -a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : perform atomic OpenMP pragma (default no)\n"&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; " &amp;nbsp; &amp;nbsp; &amp;nbsp; -o &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : output timing results (default no)\n"&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; " &amp;nbsp; &amp;nbsp; &amp;nbsp; -d &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : enable debug mode\n";&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; fprintf(stderr, help, argv0, threshold);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; exit(-1);&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;/*---&amp;lt; main() &amp;gt;-------------------------------------------------------------*/&lt;BR /&gt;
	int main(int argc, char **argv) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int &amp;nbsp; &amp;nbsp; opt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; extern char &amp;nbsp; *optarg;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; extern int &amp;nbsp; &amp;nbsp; optind;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int &amp;nbsp; &amp;nbsp; i, j, nthreads;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int &amp;nbsp; &amp;nbsp; isBinaryFile, is_perform_atomic, is_output_timing;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int &amp;nbsp; &amp;nbsp; loop_iterations;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int &amp;nbsp; &amp;nbsp; xeon_threads;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int &amp;nbsp; &amp;nbsp; numClusters, numCoords, numObjs;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int &amp;nbsp; &amp;nbsp;*membership; &amp;nbsp; &amp;nbsp;/* [numObjs] */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;char &amp;nbsp; *filename;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float &amp;nbsp;*objects; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* [numObjs][numCoords] data objects */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float &amp;nbsp;*clusters; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* [numClusters][numCoords] cluster center */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float &amp;nbsp; threshold;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double &amp;nbsp;timing, io_timing, clustering_timing;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; /* some default values */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; _debug &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nthreads &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; threshold &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0.001;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; numClusters &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; isBinaryFile &amp;nbsp; &amp;nbsp; = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; is_output_timing = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; is_perform_atomic = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; filename &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = NULL;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xeon_threads = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; while ( (opt=getopt(argc,argv,"p:x:i:n:t:abdo"))!= EOF) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; switch (opt) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'i': filename=optarg;&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'b': isBinaryFile = 1;&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 't': threshold=atof(optarg);&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'n': numClusters = atoi(optarg);&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'p': nthreads = atoi(optarg);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'a': is_perform_atomic = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'o': is_output_timing = 1;&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'd': _debug = 1;&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case '?': usage(argv[0], threshold);&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 'x': xeon_threads = atoi(optarg);&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; default: usage(argv[0], threshold);&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; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; if (filename == 0 || numClusters &amp;lt;= 1) usage(argv[0], threshold);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; if (nthreads &amp;gt; 0)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; omp_set_num_threads(nthreads);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; if (is_output_timing) io_timing = omp_get_wtime();&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp;/* read data points from file ------------------------------------------*/&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; objects = file_read(isBinaryFile, filename, &amp;amp;numObjs, &amp;amp;numCoords);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (objects == NULL) exit(1);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; if (is_output_timing) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timing &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= omp_get_wtime();&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; io_timing &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = timing - io_timing;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	/* objects adjusted */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; float *temp_objects;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; temp_objects = (float*)malloc(numObjs * numCoords * sizeof(float));&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numObjs;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;numCoords;j++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; temp_objects[j*numObjs+i] = objects[i*numCoords+j];&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; objects = temp_objects;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (is_output_timing) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timing = omp_get_wtime();&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clustering_timing = timing;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("omp get max threads num in main: %d\n", omp_get_max_threads());&lt;BR /&gt;
	// &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("omp get num threads num in main: %d\n", omp_get_num_threads());&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; /* start the timer for the core computation -----------------------------*/&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; /* membership: the cluster id for each data object */&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; membership = (int*) malloc(numObjs * sizeof(int));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; assert(membership != NULL);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;numObjs;i++)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; membership&lt;I&gt;=0;&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; clusters = jth_off_kmeans(objects, numCoords, numObjs, numClusters, threshold, membership, &amp;amp;loop_iterations, xeon_threads);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; free(objects);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; if (is_output_timing) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timing &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= omp_get_wtime();&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clustering_timing = timing - clustering_timing;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; /* output: the coordinates of the cluster centres ----------------------*/&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; file_write(filename, numClusters, numObjs, numCoords, clusters,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;membership);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; free(membership);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; free(clusters);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; //wefwefwef&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; /*---- output performance numbers ---------------------------------------*/&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if (is_output_timing) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; io_timing += omp_get_wtime() - timing;&lt;BR /&gt;
	// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("\n **** jth off kmeans &amp;nbsp;****\n");&lt;BR /&gt;
	/* &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (is_perform_atomic)&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; printf(" using atomic pragma ******\n");&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&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; printf(" using array reduction ******\n"); &amp;nbsp;*/&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("Number of threads = %d\n", omp_get_max_threads());&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("Number of xeon threads = %d\n", xeon_threads);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("Input file &amp;nbsp; &amp;nbsp;: %s\n", filename);&lt;BR /&gt;
	// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("numObjs &amp;nbsp; &amp;nbsp; &amp;nbsp; : %d\n", numObjs);&lt;BR /&gt;
	// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("numCoords &amp;nbsp; &amp;nbsp; : %d\n", numCoords);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("numClusters &amp;nbsp; : %d\n", numClusters);&lt;BR /&gt;
	// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("threshold &amp;nbsp; &amp;nbsp; : %.4f\n", threshold);&lt;BR /&gt;
	// &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("loop iterations : %d\n", loop_iterations);&lt;/P&gt;

&lt;P&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("I/O time &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = %10.4f sec\n", io_timing);&lt;BR /&gt;
	// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("Computation timing = %10.4f sec\n", clustering_timing);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf("Computation timing per iteration = %10.4f sec\n", clustering_timing/loop_iterations);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; return(0);&lt;BR /&gt;
	}&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jul 2015 16:31:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015273#M35803</guid>
      <dc:creator>TaeHyeok_J_</dc:creator>
      <dc:date>2015-07-17T16:31:00Z</dc:date>
    </item>
    <item>
      <title> </title>
      <link>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015274#M35804</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;yeah, i found that there is an error on out() statement, but still don't know why. :(&amp;nbsp;&lt;/P&gt;

&lt;P&gt;compiler version gcc 4.4.7 .&lt;/P&gt;

&lt;P&gt;mpss version 3.1.4.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;thank you for your help in advance !&amp;nbsp;&lt;/P&gt;

&lt;P&gt;regards&amp;nbsp;&lt;/P&gt;

&lt;P&gt;TaeHyeok, Jang&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jul 2015 16:37:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015274#M35804</guid>
      <dc:creator>TaeHyeok_J_</dc:creator>
      <dc:date>2015-07-17T16:37:50Z</dc:date>
    </item>
    <item>
      <title>Move the allocation of</title>
      <link>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015275#M35805</link>
      <description>&lt;P&gt;Move the allocation of clusters&amp;nbsp;before &amp;nbsp;the #pragma offload&amp;nbsp;target.&amp;nbsp; clusters is not allocated on the host to bring back the values computed on the card.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;clusters = (float*)malloc(numclusters*numdim*sizeof(float));&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert(clusters != NULL);&lt;/P&gt;

&lt;P&gt;#pragma offload target .......&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jul 2015 16:50:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/offload-error-cannot-release-buffer-memory-on-device-0-error/m-p/1015275#M35805</guid>
      <dc:creator>Ravi_N_Intel</dc:creator>
      <dc:date>2015-07-17T16:50:24Z</dc:date>
    </item>
  </channel>
</rss>

