Intel has released a software development kit for OpenCL, an open and royalty-free standard which enables you to write programs that can run across platforms made up of a mixture of CPUs, GPUs and other processors. These mixed platforms are becoming increasingly prevalent, and OpenCL makes it possible to create a single program that runs across all the resources in the platform.
There are a few limitations, as Yadiv Aridor, technical lead for the Intel OpenCL project, explained in the Parallel Programming Talk episode below. Although OpenCL code is portable by design, there are a few potential pitfalls. For example, different devices might have a different degree of floating point precision, which means you could run the same code on different devices and get different results. That might not always matter, but it does mean a heterogeneous architecture and OpenCL might not be the natural choice for high precision applications.
There are also extensions to the core specification of OpenCL which are being used to cater for the unique characteristics of different devices so that the maximum performance can be achieved. Aridor says that over time the number of device specific extensions will be reduced as the specification evolves, although he doesn’t believe that it will be possible to completely eliminate them. I wonder whether that will put boundaries on how widely used OpenCL is, or whether programmers will be happy enough to have a specification that does maybe 80% or 90% of the work they need done.
OpenCL has the broad support it needs to succeed from across the industry, with hardware companies participating in the OpenCL Working Group including Intel, AMD, ARM, IBM, Nvidia, Texas Instruments and software houses including EA and Activision.
You can now use the Intel OpenCL SDK to create and distribute applications optimized for Intel Core and Intel Xeon processors. For a thorough introduction to OpenCL and its underlying ideas, see the introductory presentation by Tim Mattson of Intel (PDF). There are also lots of supporting resources and backgrounders on the Intel OpenCL page here. The Wikipedia page on OpenCL gives some useful context if you’re new to the concept too.
I’m hoping to line up an interview so I can ask some deeper questions about OpenCL. If you’ve got any questions about how OpenCL works, what the roadmap is, why you should use it (or even whether you should use it), feel free to leave a comment below and I’ll try to get an answer for you.
In the meantime, make a cup of tea and settle down with a biscuit to watch this episode of Parallel Programming Talk, which covers OpenCL…