OpenCL C++ Kernel Language Significantly Boosts Programmer Productivity; New SPIR-V common intermediate language used by both OpenCL 2.1 and Vulkan
March 3rd 2015, San Francisco, GDC – The Khronos™ Group, an open consortium of leading hardware and software companies, today announced the ratification and public release of the OpenCL™ 2.1 provisional specification. OpenCL 2.1 is a significant evolution of the open, royalty-free standard for heterogeneous parallel programming that defines a new kernel language based on a subset of C++ for significantly enhanced programmer productivity, and support for the new Khronos SPIR-V™ cross-API shader program intermediate language now used by both OpenCL and the new Vulkan graphics API. The OpenCL 2.1 specification at www.khronos.org/opencl/ is released in provisional form to enable developers and implementers to provide feedback before finalization at the OpenCL forums: https://www.khronos.org/opencl/opencl_feedback_forum.
OpenCL 2.1 Technical Overview Session in San Francisco
OpenCL Ecosystem Advances: OpenCL 2.1, SPIR-V and SYCL
Wednesday, March 4th at 3-4:30pm
Venue: SF Green Space at 657 Mission Street, Suite 200 – five minutes’ walk from GDC
Overview of OpenCL 2.1, SPIR-V and direct interaction with working group members
No GDC pass required, however seating is limited so please register if you plan to attend.
About OpenCL 2.1
The OpenCL C++ kernel language is a static subset of C++14 and significantly boosts parallel programming productivity by providing lambda functions, classes, templates, operator overloading, and many other C++ features to free developers from low-level coding details without sacrificing performance. OpenCL C++ enables reusable device libraries and containers for easily sharable code that is fast and elegant, and templates enables meta-programming for highly adaptive software that cleanly delivers performance portability.
In another significant announcement today, OpenCL 2.1 and Vulkan™, the new open standard API for high-efficiency access to graphics and compute on modern GPUs, are now sharing core intermediate language technologies resulting in SPIR-V; a revolution in the Khronos Standard Portable Intermediate Representation initially used by OpenCL™, now fully defined by Khronos with native support for shader and kernel features. SPIR-V splits the compiler chain, enabling high-level language front-ends to emit programs in a standardized intermediate form to be ingested by Vulkan or OpenCL drivers. Eliminating the need for a built-in high-level language source compiler significantly reduces driver complexity and will enable a diversity of language front-ends. Additionally, a standardized IR provides a measure of kernel IP protection, accelerated kernel load times and enables developers to use a common language front-end, improving kernel reliability and portability across multiple implementations.
In addition to the introduction of the OpenCL C++ shading language, OpenCL 2.1 brings enhancements to the OpenCL API, including:
- Subgroups, that expose hardware threading, are bought into core, together with additional subgroup query operations for increased flexibility;
- clCloneKernel enables copying of kernel objects and state for safe implementation of copy constructors in wrapper classes;
- Low-latency device timer queries support alignment of profiling between device and host code.
“OpenCL 2.1 has responded to developer demand with a C++ based kernel language which delivers the next level of programmer productivity in parallel programming, while still preserving backwards compatibility for existing OpenCL C kernels,” said Neil Trevett, president of the Khronos Group and chair of the OpenCL working group and vice president at NVIDIA. “The use of SPIR-V by Vulkan and OpenCL will fundamentally reshape the graphics and compute ecosystem by enabling diverse language and middleware front-ends to leverage the hardware community’s investment in optimized back-end drivers. Khronos is investigating catalyzing the OpenCL 2.1 ecosystem with an open source front-end OpenCL C++ compiler implementation and a convertor between SPIR-V and LLVM, and we welcome developer feedback on this and any other aspect of OpenCL 2.1.”
Industry Support for OpenCL 2.1
“AMD is excited to see OpenCL™ evolve to include a C++ kernel language, which will significantly expand the number of developers targeting heterogeneous platforms,” said Manju Hegde, corporate vice president, Heterogeneous Applications and Developer Solutions, AMD. “We also applaud the bold move to SPIR-V which provides a common binary target language across graphics and compute. This greatly simplifies vendor driver development and enables innovation in new languages targeting cross-platform acceleration of applications.”
“Mobile devices are now the primary computing platform for consumers,” said Dennis Laudick, vice president, partner marketing, media processing group, ARM. “As a founding member of Khronos, ARM is fully behind the new OpenCL specification including new features that enable mobile computing to be more energy-efficient.”
“Intel has been deeply involved in the development of OpenCL 2.1. We’re excited to get this new specification into the hands of Intel platform developers,” said Jon Khazam, vice president and general manager of Intel’s Visual & Parallel Computing Group. “The addition of C++ support and movement toward a Common IR across OpenCL and the new Vulkan graphics API will facilitate wider adoption and deployment of OpenCL in heterogeneous computing applications.”
“The addition of the C++ kernel language in OpenCL 2.1 is a very exciting development for the HPC community,” said Simon McIntosh-Smith, head of the HPC research group at the University of Bristol. “C++ is being increasingly used to develop scientific codes, and so this development will make it much easier to port new HPC software to a wide variety of high performance, parallel hardware. OpenCL 2.1’s C++ kernel language could cause a step change in the rate of adoption for OpenCL in HPC.”
“We at YetiWare believe that software should run as fast as possible by using all of the processors on a system, and the OpenCL standard makes that possible,” said AJ Guillon, founder and chief technical officer, YetiWare Inc. “The OpenCL C++ kernel language and SPIR-V are both major advancements and big wins for developers.”
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 Vulkan™, OpenGL®, OpenGL® ES, WebGL™, OpenCL™, SPIR™, SYCL™, WebCL™, OpenVX™, EGL™, 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.