<?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 Persistent thread on the CPU in OpenCL* for CPU</title>
    <link>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827875#M1219</link>
    <description>Hi,&lt;BR /&gt;&lt;BR /&gt;How many workgroups you have?&lt;BR /&gt;&lt;BR /&gt;Can you put small reproducer of this issue?&lt;BR /&gt;&lt;BR /&gt;Thansk,&lt;BR /&gt;Evgeny</description>
    <pubDate>Mon, 19 Sep 2011 11:17:15 GMT</pubDate>
    <dc:creator>Evgeny_F_Intel</dc:creator>
    <dc:date>2011-09-19T11:17:15Z</dc:date>
    <item>
      <title>Persistent thread on the CPU</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827874#M1218</link>
      <description>Hi,&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I'm trying to implement some "persistent thread" on the CPU to batch a set of tasks, but I got some strange results.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I have put some "printf" in the following code. What is strange is that I see the "BEFORE" before the "START" !&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I have a local barrier and so I should see "START" before !!&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;{&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;const size_t lid = get_local_id(0);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;__local volatile int localPoolNextRay[1];&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;__local volatile int localPoolRayCount[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;&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;if (lid &amp;lt; 1){&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;localPoolNextRay[0] = localPoolRayCount[0] = 0;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;printf("START %d %d : %d\\n", get_global_id(0), lid, localPoolNextRay[0]);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&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;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;barrier(CLK_LOCAL_MEM_FENCE);&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;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;while(true)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;{&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;// Local pool is empty&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;if (localPoolRayCount[0] &amp;lt; 1 &amp;amp;&amp;amp; lid &amp;lt; 1)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;{&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;			&lt;/SPAN&gt;localPoolNextRay[0] = atom_add(globalPoolNextRay, LOAD_BALANCER_BATCH_SIZE);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;			&lt;/SPAN&gt;localPoolRayCount[0] = LOAD_BALANCER_BATCH_SIZE;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;}&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;mem_fence(CLK_LOCAL_MEM_FENCE);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;//barrier(CLK_LOCAL_MEM_FENCE);&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;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;printf("BEFORE %d %d : %d\\n", get_global_id(0), lid, localPoolNextRay[0]);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;// Get rays from local pool&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;int myRayIndex = localPoolNextRay[0] + lid;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;if (myRayIndex &amp;gt;= globalPoolRayCount)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;			&lt;/SPAN&gt;return;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;			&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;printf("AFTER %d\\n", myRayIndex);&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;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;mem_fence(CLK_LOCAL_MEM_FENCE);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;if (lid &amp;lt; 1)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;{&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;			&lt;/SPAN&gt;localPoolNextRay[0] += 32;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;			&lt;/SPAN&gt;localPoolRayCount[0] -= 32;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;			&lt;/SPAN&gt;//mem_fence(CLK_LOCAL_MEM_FENCE);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;}&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;mem_fence(CLK_LOCAL_MEM_FENCE);&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;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;// Execute&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;trace(myRayIndex, tasks);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;}&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Mon, 19 Sep 2011 10:59:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827874#M1218</guid>
      <dc:creator>Polar01</dc:creator>
      <dc:date>2011-09-19T10:59:26Z</dc:date>
    </item>
    <item>
      <title>Persistent thread on the CPU</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827875#M1219</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;How many workgroups you have?&lt;BR /&gt;&lt;BR /&gt;Can you put small reproducer of this issue?&lt;BR /&gt;&lt;BR /&gt;Thansk,&lt;BR /&gt;Evgeny</description>
      <pubDate>Mon, 19 Sep 2011 11:17:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827875#M1219</guid>
      <dc:creator>Evgeny_F_Intel</dc:creator>
      <dc:date>2011-09-19T11:17:15Z</dc:date>
    </item>
    <item>
      <title>Persistent thread on the CPU</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827876#M1220</link>
      <description>Hi,&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Global work = 704&lt;/DIV&gt;&lt;DIV&gt;Local work = 32&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I'm able to run it correctly, but for this I have to put barrier everywhere ! In fact, because there is no "natural" SIMT behavior on the CPU I'm not sure that using persitent thread will help on the CPU ! (Lot of barriers or atomic functions !!).&lt;/DIV&gt;</description>
      <pubDate>Mon, 19 Sep 2011 13:52:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827876#M1220</guid>
      <dc:creator>Polar01</dc:creator>
      <dc:date>2011-09-19T13:52:41Z</dc:date>
    </item>
    <item>
      <title>Persistent thread on the CPU</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827877#M1221</link>
      <description>Hi Polar01,&lt;BR /&gt;&lt;BR /&gt;Since you have serveral work-groups executing simultaneously, the 'BEFORE' printout could come from another work group (from a work item that has &lt;TT&gt;lid &amp;gt;= 1&lt;/TT&gt; and therefore doesn't print 'START')&lt;BR /&gt;</description>
      <pubDate>Tue, 20 Sep 2011 04:53:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827877#M1221</guid>
      <dc:creator>Eli_Bendersky__Intel</dc:creator>
      <dc:date>2011-09-20T04:53:48Z</dc:date>
    </item>
    <item>
      <title>Persistent thread on the CPU</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827878#M1222</link>
      <description>&lt;P&gt;Good to here it's running well.&lt;/P&gt;</description>
      <pubDate>Tue, 20 Sep 2011 05:43:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/Persistent-thread-on-the-CPU/m-p/827878#M1222</guid>
      <dc:creator>Evgeny_F_Intel</dc:creator>
      <dc:date>2011-09-20T05:43:56Z</dc:date>
    </item>
  </channel>
</rss>

