how to use work_item function, barrier function, mem_fence in built-in fucntions

how to use work_item function, barrier function, mem_fence in built-in fucntions

I have been studying a parallel programing with IntelOpenCLSDK 1.5 onIntel core processor. When I read OpenCL specification, there are some functions to execute aparallel program with vector-typed data. As there is not a sample program in Intel OpenCL SDK 1.5, I cannot understand how to use work_item functions, barrier function, and mem_fence function. If I will use these functions, will my program run faster? My PC's environment is as follows:-------------OS: Windows 7 ProfessionalProcessor:Intel Core i7-2640M CPUTool: Microsoft Visual Studio 2010-------------Best Wishes,Noriko Etani

3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi Noriko,

To use barrier and mem_fence you need to understand parallel execution and synchronization. barrier() function ensures correct ordering of local/global memory operations (depending on what flag you pass to it - CLK_LOCAL_MEM_FENCE or CLK_GLOBAL_MEM_FENCE). Basically barriers synchronize threads in the same workgroup, butnot across workgroups.

According to the OpenCL spec,a mem_fence() ensures ordering between memory operations of a work-item. Meaning loads and stores operations before the mem_fence will be committed to memory before any loads

and stores following the mem_fence.

These routines won't make your program run faster, but help in ensuring correct behavior of parallel execution. There are a lot of caveats using synchronization functions. I suggest you grab an OpenCL book or look at the spec to understand what to do and what to avoid.

The work_item functions let you query the number of dimensions, the local and global ids of a work-item, number of local and global work-items etc.

Unfortunately our SDK doesn't have any samples demonstrating these functions. But there are a lot of examples out there, if you search online.

If you still need code samples, feel free to post and I'll point you to some resources. In the future we'll try to add more examples to the SDK where and when possible.


Hi Raghu,

I looked around and I can get a ton of good example of barrier. However for mem_fence, I can't really get a good example. 


Leave a Comment

Please sign in to add a comment. Not a member? Join today