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 enables single source development where C++ template functions can contain both host and device code to construct complex algorithms that use OpenCL acceleration, and then re-use them throughout their source code on different types of data.

SYCL 1.2

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.

safety