ComputeCpp CE 0.9.1 Release

20 July 2018

The SYCL specification has been updated to SYCL v1.2.1 revision 3 providing a maintenance update to the published specification. This new revision of the SYCL specification introduces clarifications and enhancements to improve consistency. These changes, agreed by the SYCL working group, will make it easier to learn SYCL and write generic code.

For this reason we have released ComputeCpp Community Edition, v0.9.1, a minor update supporting this new revision of the specification, that can be downloaded from our website.

One of the improvements to the interface included in this release will require mandatory changes to SYCL applications in order to support SYCL 1.2.1 revision 3. These changes are in naming only and do not effect semantics, so applications will continue to execute as before. Furthermore these changes have been implemented as deprecations to the interface so applications will continue to compile, however ComputeCpp will report warnings for any use of the deprecated interface.

Updating your Applications

Your application is likely to require changes in order to be compatible with the new release. The changes you will need to make are to the member function names of the group, nd_item and nd_range classes. These changes improve consistency in naming across all of the SYCL index and range class types.

We have tried to make this transition as straightforward as possible, by deprecating the original function names and introduced new functions names. This means that your code will not immediately fail to compile when updating to ComputeCpp CE 0.9.1, but you will experience warnings explaining that you are now using a deprecated interface.

Please note that because the names of the functions which have changed still exist in other parts of the SYCL interface, using a find and replace is not recommended. Instead we recommend that you either manually change the function names taking care of the context or use the deprecation warnings as a guide, since these warnings will list the new function names that you need to use.

The table below shows a list of changes introduced in the SYCL v1.2.1 revision 3 specification which will need to be applied to affected SYCL applications.

SYCL 1.2.1 Revision 2 SYCL 1.2.1 Revision 3
size_t group:: get_linear () size_t group:: get_linear_id ()

id <dimensions> nd_item:: get_num_groups ()

size_t nd_item:: get_num_groups (int dimension)

range <dimensions> nd_item:: get_group_range ()

size_t nd_item:: get_group_range (int dimension)

id<dimensions> nd_item:: get_local ()

size_t nd_item:: get_local (int dimension)

id<dimensions> nd_item:: get_local_id ()

size_t nd_item:: get_local_id (int dimension)

id<dimensions> nd_item:: get_global ()

size_t nd_item:: get_global (int dimension)

id<dimensions> nd_item:: get_global_id ()

size_t nd_item:: get_global_id (int dimension)

range<dimensions> nd_range:: get_local ()

size_t nd_range:: get_local (int dimension)

range<dimensions> nd_range:: get_local_range ()

size_t nd_range:: get_local_range (int dimension)

range<dimensions> nd_range:: get_global ()

size_t nd_range:: get_global (int dimension)

range<dimensions> nd_range:: get_global_range ()

size_t nd_range:: get_global_range (int dimension)

range<dimensions> nd_range:: get_group ()

size_t nd_range:: get_group (int dimension)

range<dimensions> nd_range:: get_group_range ()

size_t nd_range:: get_group_range (int dimension)

Codeplay Software Ltd has published this article only as an opinion piece. Although every effort has been made to ensure the information contained in this post is accurate and reliable, Codeplay cannot and does not guarantee the accuracy, validity or completeness of this information. The information contained within this blog is provided "as is" without any representations or warranties, expressed or implied. Codeplay Sofware Ltd makes no representations or warranties in relation to the information in this post.
Gordon Brown's Avatar

Gordon Brown

Principal Software Engineer