SYCL 2.2 and SPIR-V 1.1 provisional specifications also released to complement and support OpenCL C++
April 18th 2016 – International Workshop on OpenCL, Vienna – The Khronos™ Group, an open consortium of leading hardware and software companies, announces the immediate availability of the OpenCL™ 2.2, SYCL™ 2.2 and SPIR-V™ 1.1 provisional specifications. OpenCL 2.2 incorporates the OpenCL C++ kernel language for significantly enhanced parallel programming productivity. SYCL 2.2 enables host and device code to be contained in a single source file, while leveraging the full power of OpenCL C++. SPIR-V 1.1 extends the intermediate representation defined by Khronos with native support for shader and compute kernel features to fully support the OpenCL C++ kernel language. These new specifications can be found at www.khronos.org and are released in provisional form to enable developers and implementers to provide feedback before finalization, including at the Khronos forums.
“OpenCL 2.2 brings the most developer-requested feature into core – the OpenCL C++ kernel language,” said Neil Trevett, president of Khronos and chair of the OpenCL working group. “Overall, Khronos is releasing three specifications today in a coordinated push to increase parallel programming productivity: OpenCL 2.2 has been released in parallel with SPIR-V 1.1 which brings support for the OpenCL C++ kernel language into the Khronos-defined intermediate language, and SYCL 2.2 which leverages OpenCL 2.2 to provide the power of single source C++ programming.”
OpenCL 2.2 defines the OpenCL C++ kernel language as a static subset of the C++14 standard. OpenCL C++ includes classes, templates, lambda expressions, function overloads and many other constructs to increase parallel programing productivity through generic and meta-programming.
OpenCL library functions can now take advantage of the C++ language to provide increased safety and reduced undefined behavior while accessing features such as atomics, iterators, images, samplers, pipes, and device queue built-in types and address spaces.
Pipe storage is new a device-side type in OpenCL 2.2 that is useful for FPGA implementations by making connectivity size and type known at compile time, enabling efficient device-scope communication between kernels.
OpenCL 2.2 also includes features for enhanced optimization of generated code: applications can provide the value of specialization constants at SPIR-V compilation time, a new query can detect non-trivial constructors and destructors of program scope global objects, and user callbacks can be set at program release time.
SYCL 2.2 enables the capabilities of OpenCL 2.2 to be leveraged while keeping host and device code in a single source file. SYCL aligns the hardware features of OpenCL with the direction of the C++ standard, so that developers can write C++ template libraries that exploit all the capabilities of compute devices, from the smallest OpenCL 1.2 embedded device to the most advanced OpenCL 2.2 accelerators, without writing proprietary or non-standard code. The open-source C++ 17 Parallel STL for SYCL, hosted by Khronos, enables the upcoming C++ standard to support OpenCL 2.2 features such as shared virtual memory, generic pointers and device-side enqueue.
OpenCL C++ and SYCL between them now provide developers the choice of two C++ approaches. For developers who want to separate their device-side kernel source code and their host code, the C++ kernel language can be the best option. This is the approach taken with OpenCL C today, as well as the widely-adopted approach taken by shaders in graphics software. The alternative approach, commonly called ‘single-source’ C++, is the approach taken by SYCL, OpenMP and the C++ 17 Parallel STL. By specifying both SYCL and the C++ kernel language, Khronos provides developers maximum choice, while aligning the two specifications so that code can be easily shared between these complementary approaches.
“Codeplay continues to support and drive these evolving open standards enabling advanced heterogeneous processor solutions,” says Andrew Richards, CEO of Codeplay and chair of the SYCL working group. “Accelerated vision processing applications in mobile, cloud, IoT and automotive ADAS benefit from improved Khronos open standards simplifying the overall parallel software development process.”
SPIR-V (Standard Portable Intermediate Representation) is the first open standard, cross-API intermediate language for natively representing parallel compute and graphics. SPIR-V 1.1 now supports all the kernel language features of OpenCL C++ in OpenCL 2.2, including initializer and finalizer function execution modes to support constructors and destructors. SPIR-V 1.1 also enhances the expressiveness of kernel programs by supporting named barriers, subgroup execution, and program scope pipes.
Specialization constants, previously available for Vulkan™ graphics shaders in SPIR-V 1.0, are now available to OpenCL kernel programs in SPIR-V 1.1. This feature allows a single SPIR-V module to express a family of parameterized OpenCL kernel programs by embedding compile-time settings that can be specialized at runtime. This eliminates the need to ship multiple variants of a device program, or recompiling them from source on-the-fly with different compilation settings, leading to massive savings in shipped program size or application startup time.
“OpenCL C++ is a plus-plus for the entire industry,” said AJ Guillon, founder and chief technical officer, YetiWare Inc. “The OpenCL working group, based on significant developer feedback, has committed to maintaining the idioms and style of C++ in OpenCL C++. This is a BIG deal for developers that want both maximum performance and code elegance, and something we will integrate in YetiWare’s OpenCL training programs immediately.”
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 Vulkan™, OpenGL®, OpenGL® ES, WebGL™, OpenCL™, SPIR™, SPIR-V™, SYCL™, WebCL™, OpenVX™, EGL™, 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, Vulkan, DevU, SPIR, SPIR-V, SYCL, WebGL, WebCL, COLLADA, OpenKODE, OpenVG, OpenVX, EGL, glTF, OpenKCAM, StreamInput, OpenWF, 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.