SYCL Overview

SYCL

C++ Single-source Heterogeneous Programming for OpenCL

SYCL (pronounced ‘sickle’) is a royalty-free, cross-platform abstraction layer that builds on the underlying concepts, portability and efficiency of OpenCL that enables code for heterogeneous processors to be written in a “single-source” style using completely standard C++. 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™.

SYCL 1.2.1

SYCL 1.2.1 revision 3 is now the latest release as of July 19, 2018, 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.

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 on Github. 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).

SYCL 1.2

These SYCL 1.2 specification and conformance tests were released on May 11, 2015 and includes the following features:

  • 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.
  • Can be implemented to work with a variety of existing and new C++ compilers and layers over OpenCL 1.2 implementations from diverse vendors.
  • 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.
  • 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
  • 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.
  • Can be implemented to work with a variety of existing and new C++ compilers and layers over OpenCL 1.2 implementations from diverse vendors.

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.

This final SYCL 1.2 specification and conformance tests were released on May 11, 2015 and includes the following features:

  • 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.
  • Can be implemented to work with a variety of existing and new C++ compilers and layers over OpenCL 1.2 implementations from diverse vendors.
  • 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.
  • 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
  • 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.
  • Can be implemented to work with a variety of existing and new C++ compilers and layers over OpenCL 1.2 implementations from diverse vendors.
  • 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.

Questions and Community Feedback
Questions on using SYCL can be asked on the Khronos SYCL forums. 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.