Programming abstraction layer to enable applications and high-level frameworks to leverage C++ and OpenCL for heterogeneous parallel acceleration
March 19, 2014 – San Francisco, Game Developer’s Conference – The Khronos™ Group today announced the release of SYCL™ 1.2 as a provisional specification to enable community feedback. SYCL is a royalty-free, cross-platform abstraction layer that enables the development of applications and frameworks that build on the underlying concepts, portability and efficiency of OpenCL™, while adding the ease-of-use and flexibility of C++. For example, SYCL can provide single source development where C++ template functions can contain both host and device code to construct complex algorithms that use OpenCL acceleration - and then enable re-use of those templates throughout the source code of an application to operate on different types of data.
The SYCL 1.2 provisional specification supports OpenCL 1.2 and has been released to enable the growing community of OpenCL developers to provide feedback before the specification is finalized. The specification and links to feedback forums are available at: www.khronos.org/opencl/sycl.
While SYCL is one possible solution for high-level parallel programming that leverages C++ programming techniques, the OpenCL group encourages innovation in diverse programming models for heterogeneous systems, including building on top of the SPIR™ low-level intermediate representation, using the open source CLU libraries for prototyping, or through custom techniques.
“Developers have been requesting C++ for OpenCL to help them build large applications quickly and efficiently and there are lots of useful C++ libraries that want to port to OpenCL,” said Andrew Richards, CEO at Codeplay and chair of the SYCL working group. “SYCL makes this possible and we are looking forward to the community feedback to help drive the final release and future roadmap. We are especially keen to work with C++ library developers who want to accelerate their libraries using the performance of OpenCL devices.”
SYCL 1.2 Features
SYCL 1.2 will enable industry innovation in OpenCL-based programming frameworks:
- API specifications for creating C++ template libraries and compilers using the C++11 standard;
- Easy to use, production grade API that can be built on-top of OpenCL and SPIR;
- Compatible with standard CPU C++ compilers across multiple platforms, as well as enabling new SYCL-based device compilers to target OpenCL devices;
- Asynchronous, low-level access to OpenCL features for high performance and low-latency – while retaining ease of use;
- Khronos open royalty-free standard - to guarantee ongoing support and reciprocal IP coverage;
- OpenGL® Integration to enable sharing of image and textures with SYCL as well as OpenCL;
- Development in parallel with OpenCL – future releases are expected to support upcoming OpenCL 2.0 implementations and track future OpenCL releases.
“The Khronos OpenCL working group is methodically building a complete open standards-based stack for heterogeneous parallel programming,” said Neil Trevett, chair of the OpenCL working group, president of the Khronos Group and vice president of mobile content at NVIDIA. “First the core OpenCL cross-platform specification, then the SPIR cross-vendor intermediate representation – and now SYCL that builds on both of those previous innovations to enable frameworks that can provide sophisticated solutions such as single source C++ development. This is a significant milestone in enabling industrial-grade applications to harness OpenCL acceleration.”
“SYCL represents a tremendous step forward for C++ programmers wishing to maximize performance of their applications,” said AMD's Gregory Stoner, the company's chief evangelist for HSA and managing director of the HSA Foundation. “At AMD, we believe the key to unlocking the full potential of modern platforms lies in delivering familiar programming models and non-proprietary APIs to target the major programmable elements available on today’s SOCs and processors. We are excited about SYCL’s potential to expose these capabilities to such a large class of programmers.”
“Qualcomm Technologies, Inc. worked with Khronos on the provisional specification of SYCL 1.2 in order to help enable mobile developers to utilize C++ for programming OpenCL-supporting GPUs,” said Eric Demers, vice president of GPU hardware at Qualcomm Technologies, Inc. “SYCL 1.2 has the potential to enable the development of portable libraries that abstract away the host/device boundary, delivering the necessary flexibility to use higher-level C++ abstractions in mobile devices that use Snapdragon™ processors.”
SYCL 1.2 Developer Session at GDC 2014
Developers attending the Game Developer Conference in San Francisco are invited to take a closer look at SYCL by attending the Khronos OpenCL DevU session taking place at 3:00pm on Wednesday 19th in the Khronos private meeting room #262 on the West Mezzanine Level. Space is limited and is available on a first-come first served basis. More details on this and other GDC DevU sessions at: http://bit.ly/gdc2014
SPIR (Standard Portable Intermediate Representation) is the industry's first open, cross-platform Intermediate Representation standard for portable heterogeneous parallel computing and is based on LLVM IR. SPIR enables developers to avoid exposing sensitive kernel source and enables a diversity of language front-ends to easily target OpenCL platforms and devices in addition to OpenCL C. The SPIR specification: http://www.khronos.org/registry/spir.
The Computing Language Utility (CLU) is a lightweight API designed to help programmers explore, learn, and rapidly prototype programs with OpenCL. This API reduces the complexity associated with initializing OpenCL devices, contexts, kernels and parameters, etc. while preserving the ability to drop down to the lower level OpenCL API at will when programmers wants to get their hands dirty. The CLU release is available on GitHUB and includes an open source implementation along with documentation and samples that demonstrate how to use CLU in real applications. https://github.com/Computing-Language-Utility/CLU.
About The Khronos Group
The Khronos Group is an industry consortium creating open standards to enable the authoring and acceleration of parallel computing, graphics, vision, sensor processing and dynamic media on a wide variety of platforms and devices. Khronos standards include OpenGL®, OpenGL® ES, WebGL™, OpenCL™, SPIR™, SYCL™, WebCL™, OpenVX™, OpenMAX™, OpenVG™, OpenSL ES™, StreamInput™, COLLADA™ and glTF™. All Khronos members are enabled to contribute to the development of Khronos specifications, are empowered to vote at various stages before public deployment, and are able to accelerate the delivery of their cutting-edge media platforms and applications through early access to specification drafts and conformance tests. More information is available at www.khronos.org.
Khronos, DevU, StreamInput, SPIR, SYCL,. WebGL, WebCL, COLLADA, OpenKODE, OpenVG, OpenVX, glTF, OpenSL ES and OpenMAX are trademarks of the Khronos Group Inc. ASTC is a trademark of ARM Holdings PLC, OpenCL is a trademark of Apple Inc. and OpenGL is a registered trademark and the OpenGL ES and OpenGL SC logos are trademarks of Silicon Graphics International used under license by Khronos. All other product names, trademarks, and/or company names are used solely for identification and belong to their respective owners.