Right on schedule, the Khronos Group has released the first version of the OpenCL specification. The 1.0 spec has been ratified by a large number of companies, including AMD, Apple, Broadcom, Intel, Motorola, Nokia, Nvidia, and many others. Since this is a public release, developers can grab the spec itself and documentation right now through this page.
If you’ve been tuning out the constant flow of stream computing news lately, OpenCL stands for Open Computing Language, and Khronos defines it as “the first open, royalty-free standard for cross-platform, parallel programming of modern processors found in personal computers, servers and handheld/embedded devices.” Here’s a more detailed rundown:
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.
OpenCL will likely spur growth in the number of consumer apps that use GPUs for general-purpose computing, since developers should be able to avoid proprietary APIs and just use OpenCL to write software that runs on both AMD and Nvidia GPUs (and presumably Intel discrete GPUs when those come out, too).
As a matter of fact, both AMD and Nvidia have announced imminent support for the new spec. AMD says its engineers have already gotten OpenCL code up and running in-house, and it plans to offer a “developer version” of the ATI Stream development toolkit with OpenCL 1.0 support in the first half of next year. The company also intends to provide a “transition path” for developers who currently use its Brook+ language.
Nvidia boasts that its CUDA architecture “was designed to natively support all parallel computing interfaces and will seamlessly run OpenCL.” That means GeForce 8-series and newer GPUs should support the new language, although Nvidia doesn’t say when developers will be able to harness that capability. Considering Nvidia got one of its VPs to be chair of the OpenCL working group, though, that might not take very long.
Finally, the OpenCL 1.0 release announcement wouldn’t be complete without a shout-out to Apple. The iPod maker’s Senior VP of Software Engineering, Bertrand Serlet, points out that Apple developed OpenCL and will use it in Mac OS X 10.6 (a.k.a. Snow Leopard). OpenCL will allow the upcoming operating system to “harness an amazing amount of computing power previously available only to graphics applications,” Serlet says.