Alongside its major announcement regarding the new Vulkan™ API for graphics and compute on GPUs, the Khronos Group has also announced the release of OpenCL 2.1, provisional specification for public review. The significant features of this latest OpenCL 2.1 standard include programming improvements and SPIR-V cross-API shader support, among other features.
The New OpenCL 2.1
A significant evolution of the royalty-free standard for heterogeneous parallel programming, the new OpenCL 2.1 spec importantly will now support C++ as a programming language, significantly improving programming productivity. It will also now support Khronos SPIR-V™ a cross-API shader program intermediate language now used by both OpenCL and the new Vulkan API.
OpenCL 2.1 is being released in provisional form to enable developers and implementers to provide feedback before the finalization at the OpenCL forums.
On Wednesday, 4 March 2015, there will be a session on the new OpenCL 2.1 titled, OpenCL Ecosystem Advances: OpenCL 2.1, SPIR-V and SYCL. The event is at 3-4:30 PM and the venue is the SF Green Space at 657 Mission Street, Suite 200, a five minute walk from the GDC (Game Developers Conference) in San Francisco this week.
No GDC pass is required to attend however seating is limited and those wishing to attend should register here.
Big Improvements in OpenCL: The Details
Perhaps the biggest improvement coming to OpenCL in version 2.1 is the C++ language support. 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.
The second key feature is the new shared shader language in SPIR-V support. What SPIR-V does is 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. This feature will eliminate the need for a built-in high-level language source compiler and thereby reduces driver complexity and at the same time offers a diversity of possible language front-ends.
New features in OpenCL at the API level include:
- Subgroups, that expose hardware threading, are brought 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 — Industry Reaction
“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.”
The Khronos Group is announcing several things this week at GDC, along with OpenCL 2.1 they have also announced Vulkan™ the new graphics and compute API for GPUs. You can learn more here.