OpenCL 3.0
A few days ago a non-profit organization Khronos released the full and final specifications of the OpenCL 3.0 API. It is now a long-established framework that is slowly seeing a stronger competition, as key partners are drifting away to other APIs.
The OpenCL was first developed by Apple and then it was improved by NVIDIA and AMD and submitted to the Khronos group as an open cross-platform standard. The new version 3.0 is a reversal to some extent, as it shares the core API with an Open CL 1.2 branch released in 2011.
The only manufacturer still widely supporting the standard is Intel. The manufacturer announced in June that it Neo Runtime will support OpenCL 3.0 with Tiger Lake. Meanwhile, Apple has now moved to Metal API (since macOS 10.14) and NVIDIA has a more developer-friendly API called CUDA. AMD offers OpenCL 2.2 support with its open-source developer platform called RoCm.
Khronos has made OpenCL 3.0 implementation as easy as possible. No code change is required when moving from OpenCL 1.2 or 2.2 to 3.0.
Additionally, the OpenCL features two new extensions:
- A query to return a universally unique identifier (UUID) for an OpenCL driver and device, which may be used to identify drivers and devices across processes or APIs.
- An Asynchronous DMA extension enabling ordered DMA transactions as first class citizens—ideal for Scratch Pad Memory based devices, which require fine-grained control over buffer allocation. This extension is the first of several significant upcoming advances in OpenCL to enhance support for embedded processors.
The OpenCL popularity is not expected to increase after the announcement of 3.0. The framework’s popularity has never really kicked off, despite strong support from AMD. Some of the most interesting problems of OpenCL have been outlined in this Quora thread, which is worth checking out.