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."
My Processor is Intel i-5-2410M @2.3GHz
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
memory.
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 "BitonicSort_Kernels.zip"
and the function for testing is "TEST_BARRIER_0" in BitonicSort_Kernel.cl
=================================================================================================================
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 BitonicSort_Kernel.cl.
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!
Thanks.