All work-items in a work-group executing the kernel on a processor must execute this function before any are allowed to continue execution beyond the work_group_barrier.
| 
                    void
                    
                        work_group_barrier
                    
                ( | cl_mem_fence_flags flags ) | 
| 
                    void
                    
                        work_group_barrier
                    
                ( | cl_mem_fence_flags flags, | 
| memory_scope scope ) | 
            The built-in function barrier 
            has been renamed work_group_barrier. 
            For backward compatibility, barrier is 
            also supported.
        
          All work-items in a work-group executing the kernel on a processor must execute
          this function before any are allowed to continue execution beyond the 
          work_group_barrier.
          This function must be encountered by all work-items in a work-group executing the kernel.
            These rules apply to ND-ranges implemented with uniform and non-uniform 
            work-groups.
        
          If work_group_barrier is inside a conditional statement, then all work-items
          must enter the conditional if any work-item enters the conditional statement and
          executes the work_group_barrier.
        
          If work_group_barrier is inside a loop, all work-items must execute the
          work_group_barrier for each iteration of the loop before any are allowed
          to continue execution beyond the work_group_barrier.
        
            The work_group_barrier function also supports a 
            variant that specifies the memory scope. For the 
            work_group_barrier variant that does not take a 
            memory scope, the scope is 
            memory_scope_work_group.
        
            The scope argument specifies whether the memory 
            accesses of work-items in the work-group to 
            memory address space(s) identified by flags become 
            visible to all work-items in the work-group, the 
            device or all SVM devices. 
        
            The work_group_barrier function can also be used 
            to specify which memory operations i.e. to global 
            memory, local memory or images become visible to 
            the appropriate memory scope identified by scope. 
            The flags argument specifies the memory address 
            spaces and can be set to 0 or a 
            combination of the following values ORed together.
            When these flags are OR’ed together the 
            work_group_barrier acts as a combined barrier for 
            all address spaces specified by the flags ordering 
            memory accesses both within and across the 
            specified address spaces.
        
            CLK_LOCAL_MEM_FENCE - The 
            work_group_barrier function will ensure that all 
            local memory accesses become visible to all 
            workitems in the work-group. Note that the value of 
            scope is ignored as the memory scope is always 
            memory_scope_work_group.
        
            CLK_GLOBAL_MEM_FENCE – The 
            work_group_barrier function ensure that all global 
            memory accesses become visible to the appropriate 
            scope as given by scope.
        
            CLK_IMAGE_MEM_FENCE – The 
            work_group_barrier function will ensure that all 
            image memory accesses become visible to the 
            appropriate scope as given by scope. The value of 
            scope must be memory_scope_work_group or 
            memory_scope_device.
        
 Copyright © 2007-2013 The Khronos Group Inc. 
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
Copyright © 2007-2013 The Khronos Group Inc. 
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.