Khronos also announced the release of OpenCL 2.1 for public review:
The KhronosTM Group, an open consortium of leading hardware and software companies, today announced the ratification and public release of the OpenCLTM 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-VTM 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: https://www.khronos.org/news/events/gdc-2015.
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 VulkanTM, 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 OpenCLTM, 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.”