blob: 8ca2a1ab3dfffcb4c3ac1cf96755835f5909a3bd [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style xmlns="" type="text/css">
/* This style sets a margin around the entire page */
html, body {
margin: 10px;
}
p {
font: normal 16px verdana, sans-serif;
margin: 0;
padding-bottom:12px;
}
h1 {
font: bold 25px verdana, sans-serif;
margin-top: 0;
margin-bottom: 3px;
padding-top: 0;
padding-bottom: 0;
}
h2 {
font: bold 19px verdana, sans-serif;
margin-top: 28px;
margin-bottom: 3px;
padding-top: 0;
padding-bottom: 0;
}
h3 {
font: bold 19px verdana, sans-serif !important;
margin-top: 28px;
margin-bottom: 3px;
padding-top: 0;
padding-bottom: 0;
}
li {
font: normal 16px verdana, sans-serif;
margin-top: 0;
margin-bottom: 18px;
padding-top: 0;
padding-bottom: 0;
}
.pdparam {
font: italic 16px verdana, sans-serif;
}
.term {
font: italic 16px verdana, sans-serif;
font-weight: normal;
}
.type {
font: normal 16px verdana, sans-serif !important;
}
.parameter {
font-style: italic;
}
a:link, a:visited {
color: blue;
text-decoration: none;
font: normal 16px;
}
a:hover {
background-color: #FFFF99;
font: normal 16px;
}
div.funcsynopsis {
text-align: left;
background-color: #e6e6e6;
font: normal 16px verdana, sans-serif;
padding-top: 10px;
padding-bottom: 10px;
}
div.funcsynopsis table {
border-collapse: separate;
font: normal 16px verdana, sans-serif;
}
div.funcsynopsis td {
background-color: #e6e6e6;
border: 0 solid #000;
padding: 1px;
font: normal 16px verdana, sans-serif;
}
div.refsect1 {
font-family: verdana, sans-serif;
font-size: 16px;
}
code.constant {
font: normal 16px courier new, monospace !important;
}
span.errorname {
font: normal 16px verdana, sans-serif !important;
}
code.function {
font: bold 16px verdana, sans-serif !important;
}
b.fsfunc {
font: bold 16px verdana, sans-serif !important;
}
code.varname {
font: italic 16px verdana, sans-serif;
}
code.replaceable {
font: italic 16px courier new, monospace;
}
code.funcdef {
font: normal 16px verdana, sans-serif !important;
}
.citerefentry {
font: normal 16px verdana, sans-serif !important;
}
.parameter {
font-style: italic;
}
code.fsfunc {
font: normal 16px verdana, sans-serif !important;
}
/* PARAMETER: This style controls spacing between the terms in Parameter section */
dt {
margin-top: 15px;
}
/* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
div.refsect1 table {
width: 100%;
margin-top: 10px;
background-color: #FFF;
border-collapse: collapse;
border-color: #000;
border-width: 1px;
font: normal 16px verdana, sans-serif;
}
div.refsect1 th {
border-collapse: collapse;
border-color: #000;
border-width: 1px;
font: bold 16px verdana, sans-serif;
}
div.refsect1 td {
background-color: #FFF;
padding: 5px;
vertical-align: text-top;
border-collapse: collapse;
border-color: #000;
border-width: 1px;
font: normal 16px verdana, sans-serif;
}
div.refsect1 p{
font: normal 16px verdana, sans-serif;
margin-top: 8px;
margin-bottom: 8px;
padding-top: 0;
padding-bottom: 0;
}
/* EXAMPLE: These styles apply only to the Example section */
div.refsect2 {
font: normal 16px courier new, monospace !important;
}
div.refsect2 table {
margin-top: 0;
background-color: #e6e6e6;
width: 100%;
border: 0 solid #000;
padding: 2px;
font: normal 16px courier new, monospace !important;
}
div.refsect2 td {
background-color: #e6e6e6;
font: normal 16px courier new, monospace !important;
white-space:pre;
}
/* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
div.refsect3 {
font: normal 11px verdana, sans-serif;
margin-top: 50px;
margin-bottom: 20px;
padding-top: 0;
padding-bottom: 0;
}
</style>
<title>work_group_barrier</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
<meta name="keywords" content="Synchronization, work_group_barrier, barrier" />
</head>
<body>
<div class="refentry">
<a id="id-1"></a>
<div class="titlepage"></div>
<div xmlns="" class="refnamediv">
<a xmlns="http://www.w3.org/1999/xhtml" id="work_group_barrier"></a>
<h1>work_group_barrier</h1>
<p>
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.
</p>
</div>
<div class="refsynopsisdiv">
<h2></h2>
<div class="funcsynopsis">
<table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
<tr valign="bottom">
<td>
<code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
<a class="link" href="scalarDataTypes.html" target="pagedisplay">void</a>
<strong class="fsfunc">
work_group_barrier
</strong>
(</code>
<td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_mem_fence_flags" target="pagedisplay">cl_mem_fence_flags</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var><code>)</code></td>
</td>
</tr>
</table>
</div>
<div class="funcsynopsis">
<table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
<tr valign="bottom">
<td>
<code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
<a class="link" href="scalarDataTypes.html" target="pagedisplay">void</a>
<strong class="fsfunc">
work_group_barrier
</strong>
(</code>
<td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_mem_fence_flags" target="pagedisplay">cl_mem_fence_flags</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>, </td>
</td>
</tr>
<tr valign="top">
<td> </td>
<td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="memory_scope.html" target="pagedisplay">memory_scope</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">scope
</var><code>)</code></td>
</tr>
</table>
</div>
</div>
<div class="refsect1">
<a id="description"></a>
<h2>Description</h2>
<p>
The built-in function <code class="function">barrier</code>
has been renamed <code class="function">work_group_barrier</code>.
For backward compatibility, <code class="function">barrier</code> is
also supported.
</p>
<p>
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
<code class="function">work_group_barrier</code>.
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.
</p>
<p>
If <code class="function">work_group_barrier</code> is inside a conditional statement, then all work-items
must enter the conditional if any work-item enters the conditional statement and
executes the <code class="function">work_group_barrier</code>.
</p>
<p>
If <code class="function">work_group_barrier</code> is inside a loop, all work-items must execute the
<code class="function">work_group_barrier</code> for each iteration of the loop before any are allowed
to continue execution beyond the <code class="function">work_group_barrier</code>.
</p>
<p>
The <code class="function">work_group_barrier</code> function also supports a
variant that specifies the memory scope. For the
<code class="function">work_group_barrier</code> variant that does not take a
memory scope, the <code class="varname">scope</code> is
<code class="code">memory_scope_work_group</code>.
</p>
<p>
The <code class="varname">scope</code> argument specifies whether the memory
accesses of work-items in the work-group to
memory address space(s) identified by <code class="varname">flags</code> become
visible to all work-items in the work-group, the
device or all SVM devices.
</p>
<p>
The <code class="function">work_group_barrier</code> 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 <code class="varname">scope</code>.
The <code class="varname">flags</code> 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
<code class="function">work_group_barrier</code> acts as a combined barrier for
all address spaces specified by the flags ordering
memory accesses both within and across the
specified address spaces.
</p>
<p>
<code class="constant">CLK_LOCAL_MEM_FENCE</code> - The
<code class="function">work_group_barrier</code> function will ensure that all
local memory accesses become visible to all
workitems in the work-group. Note that the value of
<code class="varname">scope</code> is ignored as the memory scope is always
<code class="code">memory_scope_work_group</code>.
</p>
<p>
<code class="constant">CLK_GLOBAL_MEM_FENCE</code> – The
<code class="function">work_group_barrier</code> function ensure that all global
memory accesses become visible to the appropriate
scope as given by <code class="varname">scope</code>.
</p>
<p>
<code class="constant">CLK_IMAGE_MEM_FENCE</code> – The
<code class="function">work_group_barrier</code> function will ensure that all
image memory accesses become visible to the
appropriate scope as given by <code class="varname">scope</code>. The value of
<code class="varname">scope</code> must be <code class="constant">memory_scope_work_group</code> or
<code class="constant">memory_scope_device</code>.
</p>
<p>
The values of <code class="varname">flags</code> and
<code class="varname">scope</code> must be the same for
all work-items in the work-group.
</p>
</div>
<div class="refsect1">
<a id="specification"></a>
<h2>Specification</h2>
<p>
<img src="pdficon_small1.gif" />
<a href="https://www.khronos.org/registry/cl/specs/opencl-2.1-openclc.pdf#page=97" target="OpenCL Spec">OpenCL Specification</a>
</p>
</div>
<div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 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.
</div>
</div>
</body>
</html>