The Khronos Group has announced the ratification and public release for the first version of the OpenCL specification at SIGGRAPH Asia in Singapore.
It's the first royalty-free standard for cross platform parallel programming of multi-core processors, GPUs, Cell-type processors and other parallel processing devices. It's also the first truly heterogeneous programming environment the industry has seen, as well.
OpenCL stands for Open Compute Language
and it's the first API of its kind. What's more, it has been ratified by a number of industry heavyweights, including AMD, Apple, ARM, Broadcom, Intel, Motorola, Nokia, Nvidia and many others. Even game publishers like Activision Blizzard and Electronic Arts have had input on the specification's development, which bodes well for its use in future game engines.
Both AMD and Nvidia have announced their support for the new specification. AMD plans to release a preview of an OpenCL-compliant SDK in the first half of 2009 and says it already has code running on its initial implementation into the Stream SDK.
"The potential benefits of having applications run on both the CPU and GPU within a system are enormous,
" said Rick Bergman, senior vice president and general manager of AMD's Graphics Products Group. "Unfortunately, up until now programmers could only choose proprietary programming languages that limited their ability to write vendor-neutral, cross-platform applications. With today’s ratification of OpenCL 1.0, I’m happy to say those days are over. Developers now have a better, truly open choice.
Nvidia said its full support for OpenCL 1.0 and says that all of its CUDA-enabled GPUs support the new specification. Neil Trevett, vice president of mobile content at Nvidia, who also chairs the OpenCL working group, said: "The OpenCL specification is a result of a clearly recognized opportunity from leaders like Nvidia to grow the total market for heterogeneous parallel computing through an open, cross-platform standard. Nvidia will continue to be very active in the OpenCL working group to drive the evolution of the specification and will support OpenCL on all its platforms, providing developers an additional way to tap into the awesome computational power of our GPUs.
According to Khronos, 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 Electronic Engineers' IEEE 754 standard
- efficient interoperability with OpenGL, OpenGL ES and other graphics APIs.
"We've now got a 300-page developer document to read through before we start talking to the vendors about OpenCL ahead of an in-depth look at the API and what it means for application development.
In the meantime, you can discuss the announcement in the forums