We’re here with another SIGGRAPH which means new updated industry standards from Khronos. This year, we’re getting updates to OpenGL and OpenCL with OpenCL getting the majority of the attention, primarily because of the major improvements and added features. OpenGL is still seeing significant improvements, however, they are still incremental as opposed to OpenCL 2.0 which are fundamental.
As you can tell from Khronos’ own roadmap for OpenCL we are seeing the evolution across all three different facets of the API set. We’re also seeing that OpenCL’s 2.0 provisional has been released, which is today’s big announcement. It will still be quite some time until we see the memory and execution enhancements that it brings.
As you can see above, Khronos has given us a fairly detailed roadmap of how OpenCL 1.0 through 2.0 had evolved with the expectation that the specification and conformance tests will be completed within 6 months. Since OpenCL 2.0 brings such major improvements and features, this only seems natural.
As you can tell from the above, OpenCL enables a vast array of cross-platform parallel compute functions on various vendors’ hardware and platforms. By using OpenCL these companies enable software to work on more devices, and more easily.
Some of the major improvements to OpenCL come in the form of shared virtual memory which allows for complex, pointer-containing data such as trees and linked lists to be shared across the host and device kernels. Another major feature addition is dynamic parallelism which was a feature only found inside of Nvidia’s CUDA architecture and can now be found inside of OpenCL. It enables device kernels to queue up kernels to the same device with no host interaction, which reduces the need to transfer data across the PCIe lanes and allows for more flexible work scheduling. The new version also adds improved image support including sRGB images and 3D image writes as well as the ability for kernels to read from and write to the same image. Also, the addition of pipes allows for improved memory efficiency since the stored data is organized as FIFO (First In First Out) method. OpenCL 2.0 allows for kernels to read from or write to pipes, allowing for an increased level of simplicity and optimization.
On the OpenGL side of things, we saw OpenGL 4.3 surpassing DX11.1 in terms of a feature set and today we’re seeing that OpenGL 4.4 is continuing Khronos’ own leadership in graphics with additional optimizations and features. Most notably, the addition of Bindless Textures which allows the GPU to directly address textures and increases the overall amount of unique textures that are available to shaders at run-time. It also allows for a broader array of textures to be used, which increases the realism of any scene. It also provides for some incredible performance increases, especially on lighter GPU loads.
If you look at these developments, it is clear that the entire graphics industry is continuing to move forward. Mind you, the industry is moving forward even though DirectX appears to be standing still. Microsoft really helped propel the graphics industry with DirectX, there’s no doubt of that. OpenGL had quietly lingered around constantly improving over time and now it appears that Microsoft’s own complacent attitude towards graphics has resulted in the OpenGL standards to surpass DirectX’s own feature set. We won’t even talk about DirectCompute since most people don’t even know it exists when you compare it to OpenCL which was actually developed in partnership with Microsoft’s own worst enemy, Apple. OpenCL is now in version 2.0 and looks to be the way of the future for GPU compute, yet Microsoft is seemingly absent from the conversation even though everyone agrees that GPU compute is one of the key features of future computer architectures. As more and more compute models move towards the SoC design structure, the importance of GPU compute will only increase and Microsoft cannot ignore it. Until Microsoft wakes up, Khronos and their dozens of members will continue to knock out new standards and improve performance, without the need of Windows or Microsoft.