Originally published April 29, 2020. Scroll down for updates on the final spec and SDK.
Industry Standards Association The Khronos Group has released the preliminary specification for OpenCL 3.0, a radical attempt to reinvent the seasoned open GPU computing standard for the 2020s.
The proposed specification reduces OpenCL to the core and makes all functions beyond OpenCL 1.2, the last widely used version, optional – both version 2.x and version 3.0 itself.
The Khrnonos Group hopes the increased flexibility will encourage platform vendors and software developers to provide at least some of the newer features.
The group also pioneered the idea of providing OpenCL as a layer on top of other GPU computing frameworks, which might make it possible to run Apple's Metal on macOS and iOS devices.
Introduced early in graphics software, but the momentum has slowed in recent years
OpenCL was originally developed by Apple and supported by the leading processor manufacturers. It was then taken over by the Khronos Group. The OpenCL 1.0 specification was published in 2008.
In the graphics market, OpenCL saw some early success as a hardware-independent alternative to Nvidia's CUDA, which was supported in Maya for bullet physics and subdivision, as well as Houdini's pyro smoke dissolver.
Adobe implemented it in parallel with CUDA in Photoshop and Premiere Pro to create processor-intensive effects for users with AMD GPUs.
OpenCL has struggled to break into the GPU rendering market, however: key players like OctaneRender and Redshift never endorsed this, and the Chaos Group tacitly mothballed OpenCL into V-Ray Next.
Even AMD's own Radeon ProRender, which is included in Cinema 4D and Modo and is available as a plug-in for other DCC tools, uses OpenCL 1.2 from 2011.
More critically, OpenCL encountered vendor support issues: Apple rejected it in macOS 10.14 in favor of its Metal API, and support for newer versions of the specification among GPU manufacturers is patchy.
OpenCL 3.0: Anything beyond the OpenCL 1.2 specification is now optional
In response, the Khronos Group suggests reducing OpenCL to the core and making all features beyond 1.2 optional: both features were added in the poorly adopted 2.x updates and those suggested for 3.0 itself.
This means that existing OpenCL 1.2 applications will run unchanged on OpenCL 3.0 devices, while for hardware companies, updating the 1.2 drivers to 3.0 is minimal.
The move would also allow developers to choose features from 2.x, such as shared virtual memory, without having to devote the development resources necessary to support the entire specification.
In its official announcement, the Khronos Group describes the change as "increasing deployment flexibility by enabling compliant OpenCL implementations to focus on features that are relevant to their target markets."
The statement is supported by supportive quotes from hardware vendors still investing in OpenCL, including Nvidia and Intel and mobile processor manufacturers Qualcomm and Imagination Technologies.
However, it would make OpenCL a sub-standard: some, but not all of its functions are mandatory.
No longer the definitive GPU computing API, but one that works well with others?
In an excellent article on OpenCL 3.0, Ryan Smith of Andantech describes the move as "(no) parallel in the computer industry" and as a "major step backwards" for the framework.
His story goes into much more detail about the implications of the proposed specification than we can here – including new features like the open source project to support C ++ as the OpenCL programming language – so it is well worth reading it in full. One issue worth singling out is that of API layering.
The Khronos Group proposes to run OpenCL 3.0 as a layer over other APIs in the future: initially with its own Vulkan, but finally also on platforms that would otherwise probably not support it, such B. Metal.
The approach has already been used by the Khronos Group in their MoltenVK runtime library, which allows Vulkan to run over Metal on MacOS and iOS.
Although there is currently no equivalent project for OpenCL, the above slide from the Khronos Group's OpenCL 3.0 press deck suggests that this is definitely possible in the future.
Updated September 30, 2020: The Khronos Group has now released the final OpenCL 3.0 specification along with an initial OpenCL SDK that developers can use to start coding OpenCL apps.
Khronos has also confirmed that an extension to the core specification to improve interoperability between OpenCL and next-generation graphics and compute API Vulkan is under development.
Read the Khronos Group blog post announcing the final OpenCL 3.0 specification and SDK
For more information on the OpenCL 3.0 specification, see the Khronos Group website
Tags: Adobe, AMD, API, Apple, Autodesk, Blender, C #, CG software, Cinema 4D, CPU, CUDA, Cycles, DCC software, extension, framework, GPU, GPU computing, GPU rendering, graphics software, heterogeneous computing, Houdini, Imagination Technologies, Intel, iOS, Khronos Group, Linux, MacOS, Maya, Metal, Modo, MoltenVK, NVIDIA, Open Source, OpenCL, OpenCL 1.2, OpenCL 3.0, OpenCL 3.0 SDK, OptiX, Photoshop, platform support, Premiere Pro, Processor, Suggested Spec, Qualcomm, Radeon ProRender, SDK, SideFX, Spec, Vendor Support, Vulkan, Windows