AnsweredAssumed Answered

barrier functions makes wrong operation.

Question asked by leekiju on Feb 24, 2014
Latest reply on Mar 13, 2014 by leekiju

After first uploading my question, I tested more about this issue.


"aftrer using barrier function the value in memory, which is qualified as __local, is changed."



Here is my environment

Processor : Intel i-5-2410M @2.3GHz

version of SDK : v2.9

and using Visual studio 2010



I could narrow down the range.

The problem comes from using barrier when I read and write some data in memory(array), which is qualified as __local.

I didn't see there is some limitation  the memory area must be used as only reading or writing.

But it seems to be operated that there is the cache and when local memory is read, that is saved in cache and flush when I use barrier, which argument is  "CLK_LOCAL_MEM_FENCE"

The original descritption of "CLK_LOCAL_MEM_FENCE"is like below


CLK_LOCAL_MEM_FENCE: The barrier function

will either flush any variables stored in local

memory or queue a memory fence to ensure

correct ordering of memory operations to local



But I don't know this phonomina is from my mis-operation or potential bug.

Is there anyone who give some solution?


I attached another documents and new test kernel.

file names are "Barrier Error2.docx"

and ""


and the function for testing is "TEST_BARRIER_0" in





I'm testing Bitonic sort kernel using local memory. During the test, I have interesting phenomena, When I use barrier function before using async_work_group_copy.  I'm testing "TEST_BARRIER_0" kernel function in

I think barrier could be used at the position in "TEST_BARRIER_0".


If I use barrier function, the local data is restored as previous data.

I attached codes and captured image using kernel debugger.


If there is anyone who has same experience or know what is my faults, Please let' me know this.

It will be very helpful to me!