The open standard for parallel programming of heterogeneous systems
OpenCL™ (Open Computing Language) is the open, royalty-free standard for cross-platform, parallel programming of diverse processors found in personal computers, servers, mobile devices and embedded platforms. OpenCL greatly improves the speed and responsiveness of a wide spectrum of applications in numerous market categories including gaming and entertainment titles, scientific and medical software, professional creative tools, vision processing, and neural network training and inferencing.
OpenCL 2.2 brings the OpenCL C++ kernel language into the core specification for significantly enhanced parallel programming productivity:
OpenCL C++ kernel language is a static subset of the C++14 standard and includes classes, templates, lambda expressions, function overloads and many other constructs for generic and meta-programming
Leverages the new Khronos SPIR-V™ 1.2 intermediate language which fully supports the OpenCL C++ kernel language
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 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 constant 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
With OpenCL 2.2, Khronos has, for the first time, released the full source of the OpenCL 2.2 specifications and conformance tests for OpenCL 2.2 onto GitHub to enable developers to test implementations, directly suggest bug fixes and to re-mix specification and reference materials to suit their own use. The conformance tests for OpenCL versions 1.2, 2.0 and 2.1 have also been released on GitHub.
OpenCL 2.2
The OpenCL 2.2 specification is available in the Khronos Registry