May 11th 2015, IWOCL, Stanford University, CA – The Khronos™ Group, an open consortium of leading hardware and software companies, today announced the ratification and public release of the finalized SYCL ™ 1.2 specification. SYCL for OpenCL™ enables code for heterogeneous processors to be written in a “single-source” style using completely standard C++. The multi-vendor SYCL 1.2 standard is available royalty-free for industry use, and the full specification together with details about the SYCL conformance test suite and Adopters Program can be found at www.khronos.org/opencl/sycl.
SYCL single-source programming enables host and kernel code to be contained in the same source file, using the same templates for both, with full OpenCL acceleration. Developers can program at a higher level than OpenCL C, but always have access to existing code through seamless integration with OpenCL programs, C/C++ libraries and frameworks such as OpenMP. SYCL includes templates and lambda functions for higher-level application software that can be cleanly coded for optimized acceleration across the extensive range of shipping OpenCL 1.2 implementations.
“SYCL is complementary to the ongoing evolution of the OpenCL kernel language and we see the lessons and technologies from SYCL and the evolving OpenCL C++ kernel language merging and influencing each other over time,” said Andrew Richards, chair of the SYCL working group and CEO of Codeplay. “C++ programing techniques can help provide performance portability for OpenCL applications by providing highly adaptive parallel software than is easily used and re-used.”
OpenCL’s interop capability is inherited by SYCL to enable applications to use SYCL in conjunction with OpenGL, DirectX and the upcoming Vulkan API without memory-copy overhead. In return, SYCL can provide simplified error handling and effective compute and communication overlap between host and devices.
SYCL 1.2 can be implemented to work with a variety of existing and new C++ compilers and layers over OpenCL 1.2 implementations from diverse vendors. SYCL 1.2 builds on the features of C++11, with additional support for C++14 and also will enable C++17 Parallel STL programs to be accelerated on OpenCL devices in the future. SYCL 1.2 also builds on the Khronos SPIR™ 1.2 portable binary format and fully leverages the ongoing work at the OpenCL and SPIR working groups at Khronos with the aim to provide long-term support for future OpenCL capabilities, including OpenCL 2.1 and SPIR-V™.
The C++ standards body is working on a new Parallel STL standard for C++17. To support this effort, Khronos is kick-starting an open-source project to support Parallel STL on top of SYCL, running on OpenCL devices.This project is hosted on Github.
Questions and Community Feedback
Questions on using SYCL can be asked here. Also, the Khronos SYCL working group is continuing to push the standard forward to support future OpenCL versions and new standard C++ capabilities. SYCL v1.2 was designed with the help of early adopters. Your continued input, however big or small, really helps us improve and enhance future versions of the specification and define SYCL’s development roadmap.