| <?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>cl_khr_subgroups</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /> |
| <meta name="keywords" content="cl_khr_subgroups" /> |
| </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="cl_khr_subgroups"></a> |
| <h1>cl_khr_subgroups</h1> |
| <p> |
| Extension adds support for implementation-controlled subgroups. |
| </p> |
| </div> |
| <div class="refsect2"> |
| <a id="synopsis"></a> |
| <h3> |
| </h3> |
| <div class="informaltable"> |
| <table border="0"> |
| <colgroup> |
| <col align="left" class="col1" /> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td align="left"> |
| #pragma OPENCL EXTENSION cl_khr_subgroups : enable |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a id="description"></a> |
| <h2>Description</h2> |
| <p> |
| Subgroups behave similarly to workgroups with their own |
| sets of builtins and synchronization primitives. Subgroups |
| within a workgroup are independent, make forward progress |
| with respect to each other and may map to optimized |
| hardware structures where that makes sense. |
| </p> |
| <p> |
| If this extension is supported by an implementation, |
| the string <code class="code">cl_khr_subgroups</code> will be |
| present in the <code class="constant">CL_DEVICE_EXTENSIONS</code> |
| string described in table 4.3 |
| (see <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>). |
| </p> |
| <p> |
| Within a work-group work-items may be divided |
| into sub-groups in an implementation-defined |
| fashion. The mapping of work-items to sub-groups |
| is implementation-defined and may be |
| queried at runtime. While sub-groups may be |
| used in multi-dimensional work-groups, |
| each subgroup is 1-dimensional and any given |
| work-item may query which sub-group it is a member of. |
| </p> |
| <p> |
| Work items are mapped into subgroups through |
| a combination of compile-time decisions and the |
| parameters of the dispatch. The mapping to subgroups |
| is invariant for the duration of a kernel’s |
| execution, across dispatches of a given kernel |
| with the same launch parameters, and from one |
| work-group to another within the dispatch (excluding |
| the trailing edge work-groups in the |
| presence of non-uniform work-group sizes). In |
| addition, all sub-groups within a work-group will |
| be the same size, apart from the sub-group with |
| the maximum index which may be smaller if the |
| size of the work-group is not evenly divisible |
| by the size of the sub-groups |
| </p> |
| <p> |
| Sub-groups execute concurrently within a given work-group |
| and make independent forward progress with respect to each |
| other even in the absence of work-group barrier operations. |
| Subgroups are able to internally synchronize using barrier |
| operations without synchronizing with each other. |
| </p> |
| <p> |
| In the degenerate case, with the extension enabled, a single |
| sub-group must be supported for each work-group. In this |
| situation all sub-group scope functions alias their work-group |
| level equivalents. |
| </p> |
| <p> |
| This extension enables the following functions: |
| </p> |
| <div class="informaltable"> |
| <table border="1"> |
| <colgroup> |
| <col align="left" class="col1" /> |
| <col align="left" class="col2" /> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="clGetKernelSubGroupInfoKHR.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">clGetKernelSubGroupInfoKHR</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns information about the kernel object</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="get_sub_group_size.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">get_sub_group_size</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns the number of work-items in the subgroup</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="get_max_sub_group_size.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">get_max_sub_group_size</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns the maximum size of a subgroup within the dispatch</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="get_num_sub_groups.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">get_num_sub_groups</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns the number of subgroups in the current workgroup</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="get_enqueued_num_sub_groups.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">get_enqueued_num_sub_groups</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns the number of enqueued subgroups</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="get_sub_group_id.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">get_sub_group_id</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns the sub-group ID</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="get_sub_group_local_id.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">get_sub_group_local_id</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns the unique work-item ID within the current subgroup</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_barrier.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_barrier</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Sub-group barrier</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_all.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_all</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns non-zero if a predicate evaluates true for all work-items</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_any.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_any</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns non-zero if a predicate evaluates true for any work-items</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_broadcast.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_broadcast</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Broadcast a value to all work-items in a sub-group</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_reduce.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_reduce_<op></span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Broadcast a value to all work-items in a sub-group</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_scan_exclusive.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_scan_exclusive_<op></span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Do an exclusive scan operation</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_scan_inclusive.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_scan_inclusive_<op></span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Do an inclusive scan operation</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_reserve_read_pipe.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_reserve_read_pipe</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Reserve packet entries for reading from a pipe</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_reserve_write_pipe.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_reserve_write_pipe</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Reserve packet entries for writing to a pipe</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_commit_read_pipe.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_commit_read_pipe</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Indicates that all reads associated with a reservation are completed</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="sub_group_commit_write_pipe.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">sub_group_commit_write_pipe</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Indicates that all writes associated with a reservation are completed</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="get_kernel_sub_group_count_for_ndrange.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">get_kernel_sub_group_count_for_ndrange</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns the number of subgroups in each workgroup of the dispatch</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <a class="citerefentry" href="get_kernel_max_sub_group_size_for_ndrange.html"> |
| <span class="citerefentry"> |
| <span class="refentrytitle">get_kernel_max_sub_group_size_for_ndrange</span> |
| </span> |
| </a> |
| </td> |
| <td align="left">Returns the maximum sub-group size for a block</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </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.0-extensions.pdf#page=133" target="OpenCL Spec">OpenCL Specification</a> |
| </p> |
| </div> |
| <div class="refsect1"> |
| <a id="seealso"></a> |
| <h2>Also see</h2> |
| <p> |
| <a class="citerefentry" href="EXTENSION.html"><span class="citerefentry"><span class="refentrytitle">EXTENSION</span></span></a>, |
| <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>, |
| <a class="citerefentry" href="clGetKernelSubGroupInfoKHR.html"><span class="citerefentry"><span class="refentrytitle">clGetKernelSubGroupInfoKHR</span></span></a>, |
| <a class="citerefentry" href="workItemFunctions.html"><span class="citerefentry"><span class="refentrytitle">Work Item Functions</span></span></a>, |
| <a class="citerefentry" href="syncFunctions.html"><span class="citerefentry"><span class="refentrytitle">Sync Functions</span></span></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-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. |
| </div> |
| </div> |
| </body> |
| </html> |