What is OpenCL?
09 October 2009
Process type: Manage
OpenCL is a standards-based programming language that allows the CPU and GPU to work together for faster and more efficient processing. But now it’s arrived, we need to ensure that it stays open for all to use, writes Rob Jamieson
One of the major altercations between technology and users has always been that some elements don’t work with others and so integration problems occur and complex, drawn out solutions have to be found to solve the problem; not exactly the ‘plug and play’ technology everyone was promised. Printers not talking to PCs, servers not talking to servers of rival operating systems, applications not talking to each other, devices not syncing; the list is endless.
In the processor space, there was for a long time a communication issue between graphics languages and different computing systems; DirectX not working on a Mac, new programming languages being devised with few standards and limited computing conversation happening between hardware, software and components to help solve end-user problems.
However, when there is such market confusion over standards the impact on sales can be huge – look at the VHS versus Betamax, Blu-Ray versus HD DVD for example. Users, be they business or consumer, are unwilling to invest in something until the roadmap is clear. Manufacturers soon realised this was contributing to stalling sales, giving them an incentive to start ratifying standards and working together.
Last year in the CPU/GPU (Central Processing Unit / Graphics Processing Unit) space a group of companies, including AMD, came together to develop the Open Computing Language (OpenCL). The new standards-based programming language can be used by developers on multiple platforms and is not restricted to one type of processor or operating system.
CPU and GPU in harmony
Born out of the OpenGL application programming interface, which launched in 1992 to create better 2D and 3D graphics for use in CAD, medical imaging and entertainment, OpenCL is designed for parallel computing across GPUs and CPUs. OpenCL allows the GPU to help the CPU do the computing or data crunching, to enable faster and more efficient processing. By allowing the CPU and the GPU to work together, OpenCL allows more computing to be done in a shorter amount of time than a single processor could ever achieve on its own.
From finance to Film
In business terms, what OpenCL means is that responsiveness and speed from servers and high performance computers to handheld devices, will improve. For example, many financial services companies, banks and organisations that have data demanding functions often experience challenges to find the data they require, analyse and then link that data properly to give them the information they need. Previously this could take a long time; hours, days or even weeks. This is because the CPU would have to complete each task before being directed to start another; so search first, then link, then analyse. But by fully utilising the power within the GPU through OpenCL it means that the GPU can process the compute element of the journey and the CPU can crunch the data. A computing version of multi-tasking if you will.
It is not just the financial services industry that will benefit from OpenCL – it is any data intensive sector; research labs, universities, CAD and the film and TV industry, among others. One of the most important elements about OpenCL is its ability to allocate resources to the GPU or CPU depending on how much power is needed and how data intensive any given task is. In a business scenario, for example, a broadcaster would have the ability to devote more computing power to one channel that was transmitting in HD rather than its other channels running in standard definition.
In the manufacturing sector, a design engineer relies on high-end graphics and high performance computing solutions and needs the horsepower to handle the most complex designs and assemblies. The engineer will be able to work at equal footage between a design and its analysis and simulation in a multidisciplinary manner. Multiple solutions for a design will be evaluated in no time where the compute power will be alternated between the CPU and the GPU for the benefit of improved digital prototyping. Manufacturers will then realise enormous gains, cutting time-to-market while producing designs that are more reliable and efficient than ever before.
The open advantage
Arguably, the most important element of OpenCL is that it is open; it is based on standards created by a group of companies, and therefore all vendors involved in this project have a vested interest in making it work. While this has in some eyes been a long time coming, it is fantastic news, not just for the vendors involved, who have finally agreed on a language that works for all, but for the channel, which will now be able to boost sales and for end-users who will see demonstrably faster and more efficient computing.
However, following the finalisation of the standards for OpenCL, we now come to a more precarious stage in the lifecycle of the language. In order for widespread adoption, we must ensure that not only are the key stakeholders - programmers, channel and users – educated about OpenCL, but that it remains a non-commercially driven project. I am not suggesting for a moment that the companies involved in this project don’t make money from it, quite the opposite, but what I am suggesting is that as a responsible group of manufacturers we ensure that the language is kept at a price that is open to all. There seems little point in developing an open standards language if it is so cost prohibitive that there is little or no adoption and so it remains closed to a larger group of developers.
By maintaining the pricing level at a reasonable rate it will mean greater adoption and less risk of the language stalling the compute cycle. The premise behind OpenCL is to solve real problems for end-users and encourage programmers and developers to help resolve those challenges – it is not simply another way for vendors to make a fast buck. By having both language and pricing open to all, it will go some way to helping us achieve the plug and play, quick and efficient computing utopia that end-users are looking for.