If you sometimes use your computer for something other than gaming, your ultra-powerful GPU might be twiddling its thumbs, waiting for some 3D deathmatches - until now. This week, Nvidia released the final 1.0 version of its OpenCL specification, which enables programmers to use the power of the GPU for general-purpose data crunching (aka General Purpose GPU or GPGPU). OpenCL enables programmers who aren't accustomed to shoving around vertices or telling hardware T&L registers what to do to write code for GPU execution without using OpenGL or DirectX commands.
Nvidia isn't exactly new to GPGPU, as its CUDA parallel processing architecture is somewhat similar to OpenCL. CUDA is currently supported by virtually all current GeForce, GeForce Mobile, and Quadro FX GPUs when equipped with at least 256MB of dedicated video memory.
To demonstrate the "Open" in OpenCL 1.0, Nvidia has worked closely with Apple Computer, which first proposed a parallel processing standard as part of its forthcoming Snow Leopard OS X release, with arch-rival ATI's parent company AMD, and with other partners including 3DLABS, Activision Blizzard, Apple, ARM, Barco, Broadcom, Codeplay, Electronic Arts, Ericsson, Freescale, HI, IBM, Intel Corporation, Imagination Technologies, Kestrel Institute, Motorola, Movidia, Nokia, NVIDIA, QNX, RapidMind, Samsung, Seaweed, TAKUMI, Texas Instruments and Umeå University.
The name OpenCL is appropriate, as the standard is being managed by the Khronos Group, the same trade group that manages OpenGL and other media authoring and acceleration APIs.
With Apple's standardizing on Nvidia GPUs in its latest computers and Snow Leopard coming, Apple will certainly be supporting OpenCL. But, where does Microsoft fit into the OpenCL picture? Redmond's been working on its own version of GPGPU, DirectX 11 Compute, which will introduce Compute Shader. Compute Shader, unlike OpenCL, will require DirectX 11-compliant GPUs. Engadget speculates that there will be OpenCL implementations for both Windows and Linux in the future. However, the first implementations of OpenCL for Nvidia GPUs aren't expected until sometime next year.
Update 12-11-08:As reader Penguinboy points out, OpenCL isn't just for PCs. As the Khronos OpenCL website points out:
OpenCL (Open Computing Language) is the first open, royalty-free standard for general-purpose parallel programming of heterogeneous systems. OpenCL provides a uniform programming environment for software developers to write efficient, portable code for high-performance compute servers, desktop computer systems and handheld devices using a diverse mix of multi-core CPUs, GPUs, Cell-type architectures and other parallel processors such as DSPs.
In other words, whether your "computer" is a smartphone, a netbook, a PC, or a supercomputer, OpenCL has the potential to make any computing device smarter and more powerful.
So, what do you think about having a standard for putting your GPU to work when it's time to get some work done? Will OpenCL support make a difference in the next GPU you buy? Hit Comment and tell us your thoughts.