Does the official OpenCL 2.2 standard support the WaveFront?

admin

Administrator
Staff member
As known, AMD-OpenCL supports WaveFront (August 2015): <a href="http://amd-dev.wpengine.netdna-cdn....MD_OpenCL_Programming_Optimization_Guide2.pdf" rel="nofollow noreferrer">http://amd-dev.wpengine.netdna-cdn....MD_OpenCL_Programming_Optimization_Guide2.pdf</a>

<blockquote>
The AMD Radeon HD 7770 GPU, for example, supports more than 25,000
in-flight work-items and can switch to a new <strong>wavefront</strong> (containing up
to 64 work-items) in a single cycle.
</blockquote>

<hr>

But why in the OpenCL standards 1.0/2.0/2.2 there is no mention about the WaveFront?

None of the PDF has not a word <strong>WaveFront</strong>: <a href="https://www.khronos.org/registry/OpenCL/specs/" rel="nofollow noreferrer">https://www.khronos.org/registry/OpenCL/specs/</a>

Also I found that:

<ul>
<li>2013: <a href="https://community.amd.com/thread/160658" rel="nofollow noreferrer">https://community.amd.com/thread/160658</a></li>
</ul>

<blockquote>
OpenCL is a open standard. It still does not support this swizzling
concept. It does not even support wavefront/warp yet.
</blockquote>

<ul>
<li>2013: <a href="https://stackoverflow.com/a/19874984/1558037">https://stackoverflow.com/a/19874984/1558037</a></li>
</ul>

<blockquote>
That's why the concept is not on the OpenCL specification itself.
</blockquote>

<ul>
<li>2011: <a href="https://forums.khronos.org/showthread.php/7211-How-can-i-split-my-work-load-in-a-GPU-with-OpenCL" rel="nofollow noreferrer">https://forums.khronos.org/showthread.php/7211-How-can-i-split-my-work-load-in-a-GPU-with-OpenCL</a></li>
</ul>

<blockquote>
Standard OpenCL doesn't have the notion of a "wavefront"
</blockquote>

<ul>
<li>2011: <a href="https://www.cvg.ethz.ch/teaching/2011spring/gpgpu/GPU-Optimization.pdf" rel="nofollow noreferrer">https://www.cvg.ethz.ch/teaching/2011spring/gpgpu/GPU-Optimization.pdf</a></li>
</ul>

<a href=" " rel="nofollow noreferrer"><img src=" " alt="enter image description here"></a>

Indeed the official OpenCL 2.2 standard still does not support the WaveFront?

<hr>

<strong>CONCLUSION</strong>:

There is no WaveFront in OpenCL standard, but <strong>in OpenCL-2.0 there is Sub-groups with SIMD execution model akin to WaveFronts</strong>.

<ul>
<li><strong>page-100:</strong> <a href="http://amd-dev.wpengine.netdna-cdn....013/12/AMD_OpenCL_Programming_User_Guide2.pdf" rel="nofollow noreferrer">http://amd-dev.wpengine.netdna-cdn....013/12/AMD_OpenCL_Programming_User_Guide2.pdf</a></li>
</ul>

<blockquote>
6.4.2 Workgroup/subgroup-level functions

OpenCL 2.0 introduces a Khronos <strong>sub-group extension. Sub-groups are a
logical abstraction of the hardware SIMD execution model akin to
wavefronts</strong>, warps, or vectors and permit programming closer to the
hardware in a vendor-independent manner. This extension includes a set
of cross-sub-group built-in functions that match the set of the
cross-work-group built-in functions specified above.
</blockquote>