GPU computing is a hot topic at the moment. GPU computing is the use of a GPU (graphics processing unit) as a co-processor to accelerate CPUs for general-purpose scientific and engineering computing. General-purpose computing on graphics processing units (GPGPU) is the means of using a graphics processing unit (GPU), which typically handles computation only for computer graphics, to perform computation in applications traditionally handled by the central processing unit (CPU). The GPU accelerates applications running on the CPU by offloading some of the compute-intensive and time consuming portions of the code. From a user’s perspective, the application runs faster because it’s using the massively parallel processing power of the GPU to boost performance. This is known as “heterogeneous” or “hybrid” computing. This is another shift towards multiple cores: CPU and GPU fusion.
There has been for several years been manufacturer specific APIs to use GPU for computing. Nvidia has CUDA, ATI/AMD has Stream and Microsoft has several technologies (DirectCompute, Appcelerator, C++ AMP).
OpenCL is the first open, royalty-free standard for cross-platform, parallel programming of modern processors found in personal computers, servers and handheld/embedded devices. OpenCL has a very strong support base, and is likely the platform of choice for developers on Intel, AMD, ARM, Apple, IBM, etc.
Nokia and Samsung have implemented open source prototypes of WebCL. Nokia has WebCL prototype for Firefox web browser (works on 32-bit Firefox with 32-bit OpenCL drivers) and Samsung has open source Web prototype for WebKit (designed to work on Mac OSX Safari browser and Nvidia graphics card).
Nokia WebCL prototype for Firefox is an interesting project you can easily test your web browser by just installing a Firefox extension (you need to have a graphics card that supports OpenCL). Nokia WebCL web page has a web-based interactive photo editor demo utilizing GPU for image processing, other demos, WebCL programming tutorial and interactive WebCL kernel toy that allows you to easily test your own OpenCL/WebCL code. For introduction to Nokia WebCL look at Nokia WebCL prototype video: