The Khronos Group has released the finalised, completed specification for OpenCL 1.0, “the first open, royalty-free standard for cross-platform, parallel programming of modern processors found in personal computers, servers and handheld/embedded devices.” The specification was first proposed as a draft by Apple, with its new home being the Khronos Group, a consortium that develops and promotes royalty-free media APIs.
Several major companies have already announced that they will support OpenCL, with the most important ones being NVIDIA, AMD, and Intel – the three leading brands in the GPU market. Apple already announced earlier this year that its upcoming Snow Leopard operating system will have an OpenCL implementation. Microsoft has added similar GPGPU support in DirectX 11, but Windows may still support OpenCL through AMD, NVIDIA, and Intel releasing drivers for Windows.
So, what exactly is OpenCL? The press release explains it as follows:
OpenCL enables software developers to take full advantage of a diverse mix of multi-core CPUs, Graphics Processing Units (GPUs), Cell-type architectures and other parallel processors such as Digital Signal Processors (DSPs). OpenCL consists of an API for coordinating parallel computation and a programming language for specifying those computations. Specifically, the OpenCL standard defines:
- a subset of the C99 programming language with extensions for parallelism;
- an API for coordinating data and task-based parallel computation across a wide range of heterogeneous processors;
- numerical requirements based on the Institute of Electrical and Electronics Engineers’ IEEE 754 standard;
- efficient interoperability with OpenGL, OpenGL ES and other graphics APIs.
This means that programmers can utilise the processing power available in GPUs without having to learn graphics-specialised languages such as OpenGL or DirectX. Please note that OpenCL also targets ordinary CPUs and Cell.
You may obtain the specification, as well as more details, from the OpenCL website. NVIDIA promises beta support in the first quarter of next year, with the final version coming in the second quarter.