The Khronos Group Releases Finalized SYCL 1.2.1
Enhanced support for machine learning, TensorFlow acceleration, and C++17 alignment
December 6, 2017 – Embedded Vision Alliance Member Meeting – The Khronos™ Group, an open consortium of leading hardware and software companies creating advanced acceleration standards, today announces the ratification and public release of the finalized SYCL™ 1.2.1 specification. SYCL for OpenCL™ enables code for heterogeneous processors to be written in a “single-source” style using completely standard modern C++. The multi-vendor SYCL 1.2.1 standard is available royalty-free for industry use, and the full specification together with details about the SYCL open-sourced conformance test suite can be found at www.khronos.org/sycl.
SYCL 1.2.1 is based on OpenCL 1.2, and is a major update representing two and a half years of work by Khronos members. The new specification incorporates significant experience gained from three separate implementations and feedback from developers of machine learning frameworks such as TensorFlow, which now supports SYCL alongside the original CUDA accelerator back-end.
“This is a significant release update for SYCL with an enhanced ecosystem that matches our intention to support machine learning and align with modern C++17. SYCL continues to help us to drive the C++ standard towards heterogeneous support. Our intention is to move forward quickly with the SYCL roadmap to bring even more emphasis to machine learning and Safety Critical support, as well as continued alignment with future ISO C++,” said Michael Wong, SYCL working group chair.
SYCL single-source programming enables the host and kernel code for an application to be contained in the same source file, in a type-safe way and with the simplicity of a cross-platform asynchronous task graph. SYCL includes templates and generic lambda functions to enable higher-level application software to be cleanly coded with optimized acceleration of kernel code across the extensive range of shipping OpenCL 1.2 implementations. Developers program at a higher level than OpenCL C or C++, but always have access to lower-level code through seamless integration with OpenCL, C/C++ libraries, and frameworks such as OpenCV™ or OpenMP™.
While SYCL is a very generic domain-specific embedded language (DSEL) for modern C++, its unique interoperability with OpenCL also enables developers to use SYCL as a simpler way to program with existing OpenCL C/C++ or built-in kernels. SYCL can replace the Khronos cl2.hpp C++ wrapper to enable SYCL concepts such as asynchronous task graphs, and to relieve the programmer from writing cumbersome host-device transfer code. In addition, SYCL provides simplified error handling and effective compute and communication overlap between host and devices.
As well as interoperability with OpenCL, SYCL is also interoperable with OpenGL®, Vulkan®, OpenVX™, DirectX, and other vendor APIs, without memory-copy overhead. SYCL 1.2.1 can be implemented to work with a variety of existing and new C++ compilers and layers over OpenCL 1.2 implementations from diverse hardware vendors. SYCL builds on the Khronos SPIR™ 1.2 portable binary format and fully leverages the ongoing work at the Khronos OpenCL and SPIR working groups with the aim to provide long-term support for future OpenCL capabilities, including OpenCL 2.2, SPIR-V™, and Vulkan convergence.
SYCL 1.2.1 builds on the features of C++11, with additional support for C++14 and C++17, enabling ISO C++17 Parallel STL programs to be accelerated on OpenCL devices. To support this effort, Khronos is backing an open-source project to support Parallel STL on top of SYCL, running on OpenCL devices. This project is hosted at https://github.com/KhronosGroup/SyclParallelSTL. So, while SYCL brings the power of single-source modern C++ to the OpenCL and SPIR world, it also prepares the convergence with other standards such as Khronos’ Vulkan, OpenVX and NNEF and ISO C++ (SG1, SG6, SG12, SG14).
The website SYCL.tech is a forum to allow for more community feedback on the direction and development of SYCL, to enable sharing of projects in development, and for updates on the progress of the standard. The SYCL ecosystem has enjoyed strong momentum this year with multiple implementations now including ComputeCPP and TriSYCL.
Industry Support for SYCL 1.2.1
“SYCL brings to the embedded world a new system-level way to embrace heterogeneous computing. MPSoC chips are nowadays big complex systems with several kinds of CPU, GPU, FPGA, and specific accelerators all on the same chip which makes software engineer work a real challenge. SYCL allows single-source C++17 programming to unify both host and accelerator worlds, to make programming smoother and more generic with less effort. This enables and simplifies the porting of existing templated C++ Libraries and frameworks (Eigen, TensorFlow…) to the expanding world of efficient heterogeneous computing,” said Ronan Keryell, principal software engineer at Xilinx, editor of the SYCL specification, member of ISO C++ committee and technical lead of triSYCL, an open-source SYCL implementation.
“Since the initial SYCL specification release, we have seen a lot of SYCL usage, especially in machine learning. There has also been further developments in ISO C++, with the release of C++ 17 and Parallel STL. This has created experience of using SYCL that we have fed back into the specification. It’s great that we have been able to update SYCL with all of this experience. This will make it even easier for C++ developers to make use of GPUs, FPGAs and a whole range of new machine learning accelerators using SYCL and standard C++,” said Andrew Richards, CEO at Codeplay, developers of ComputeCpp, an implementation of SYCL.