The Khronos Group today announced the ratification and public release of updated OpenCL 2.0 and Provisional SYCL 1.2 specifications. The new specifications integrate feedback from the developer community, align with the latest C++ developments, and increase implementation consistency for improved portability of heterogeneous parallel applications. The latest OpenCL and SYCL specifications are open, royalty-free and available at www.khronos.org/opencl/ and www.khronos.org/opencl/sycl.
“Khronos is constantly listening to feedback from the OpenCL developer community, and consolidating improvements and clarifications into our specifications to provide the best possible platform for portable parallel applications,” said Neil Trevett, president of the Khronos Group, chair of the OpenCL working group and vice president of mobile ecosystem at NVIDIA. “OpenCL continues to develop a rich ecosystem for heterogeneous parallel programming across diverse platforms. Paired with ongoing improvements to the core OpenCL specification, SYCL adds rich single source C++ programming for OpenCL developers and the SPIR portable binary format enables a wide range of programming models to be accelerated by diverse OpenCL devices.”
Updated SYCL 1.2 Provisional Specification
Implementations of SYCL for OpenCL enable developers to write in a “single-source” C++ programming style. The evolving provisional specification has been updated based on feedback from developers and to align with the latest directions in modern C++ programming. SYCL enables powerful, modern C++ features, such as templates and lambda functions to accelerate their software for the wide range of heterogeneous devices that OpenCL supports. The SYCL working group continues to work with developers, seeking feedback and refining the provisional specification to deliver a final specification that will enable OpenCL devices to support modern C++ in an open, standard way. SYCL builds on the SPIR portable binary format and is one way of bringing higher-level models to OpenCL, forming a valuable part of the programming model ecosystem for OpenCL devices.
Updated OpenCL 2.0 Specification
The OpenCL working group has released an update to the OpenCL 2.0 specification, with clarifications that improve specification readability and reduce minor cross-vendor implementation inconsistencies, making it easier for developers to write portable OpenCL applications that reliably work across multiple devices. The changes to the OpenCL 2.0 specification include:
• Clarifications around support for Blocks in OpenCL C;
• Refinements to the precision requirements for math functions in fast math mode;
• Clarification of flags that can be applied to pipes;
• A new extension, cl_khr_device_enqueue_local_arg_types, for enqueueing device kernels to use arguments that are a pointer to a user defined type in local memory;
• Clarification of the CL_MEM_KERNEL_READ_AND_WRITE flag to enable filtering of image formats that can be passed to a single kernel instance as read_write.
Industry Support
“We are seeing a lot of developers want to accelerate their software with a range of different accelerator processors. Being an open standard, OpenCL provides developers the greatest range of options for acceleration,” said Andrew Richards, CEO of Codeplay. “At the same time, we are seeing developers using a C++ single-source programming model, because it is easy to use and easy to write libraries for. SYCL enables developers to use a modern C++ development style while still using royalty-free open standards and leverage the wide adoption of OpenCL by accelerator vendors.”
“At Imagination, we are committed to helping drive standards around heterogeneous processing and GPU compute. It’s critical that the industry continues to improve the GPU compute programming model, and Khronos is playing a key role in these efforts. We’re delighted to see continued momentum with OpenCL 2.0 and SYCL,” said Peter McGuinness, director of Multimedia Technology Marketing, Imagination Technologies.