OpenCL Makes It Official
The GPGPU contingent of the high performance computing crowd got another big boost on Tuesday with the release of OpenCL 1.0, which was announced at SIGGRAPH Asia in Singapore. OpenCL (Open Computing Language) is a royalty-free standard meant to provide a vendor-neutral programming interface for parallel computing hardware like GPUs, multicore CPUs, Cell-type processors and even digital signal processors. The immediate (or almost immediate) effect will be to bring a lot more general-purpose computing to GPUs, whether they are in servers, workstations or PCs. Eventually even handheld devices will be running GPU-accelerated software.
Both NVIDIA and AMD, who have been developing competing GPU computing products, were quick to announce support of the standard, and both vendors plan to have OpenCL-equipped SDKs in short order. Working from early specifications of OpenCL, AMD reports they are already running code on an initial implementation and plans to release a developer version of the ATI Stream SDK with OpenCL in the first half of 2009. According to Ars Technica, NVIDIA will have a beta implementation in Q1 of next year, with a production version in the second quarter.
OpenCL is bound to help both GPU vendors, but will benefit AMD proportionately more since the company doesn’t have a popular software development environment driving its GPU computing platforms, like CUDA is doing for NVIDIA. The presence of OpenCL levels the playing field, at least on the software side. This of course assumes that OpenCL will catch on with developers. Since companies like AMD, Intel, NVIDIA, Apple, IBM, Freescale, Motorola, ARM, Nokia, Samsung and Texas Instruments are part of the original OpenCL working group, the standard looks like it’s going to be supported on a very wide range of hardware.
Given the standard’s hardware base and its vendor neutrality, more HPC developers should be encouraged to give GPU computing a whirl. But since OpenCL is a low-level interface — even lower than CUDA — its attraction is probably greatest for software tool developers. Application programmers are more likely to gravitate toward higher level development environments that sit on top of OpenCL. For example, the heterogeneous compiler tools being developed by PGI and CAPS Enterprise that we covered this week will almost certainly make use of OpenCL to take advantage of cross-platform parallelism. RapidMind, an OpenCL working group member, is also intending to incorporate the technology into its software development platform.
Another salutary effect of OpenCL will be the expansion of HPC into the PC realm. Since nearly every desktop and laptop has a GPU in it — not to mention a multicore CPU — OpenCL-based software will soon have a huge playground to romp in. Apple, the original driver behind the standard, is baking OpenCL into its “Snow Leopard” OS, due out next year. Microsoft was not part of the working group, but Windows developers should be able to write OpenCL-based apps too, since both NVIDIA and AMD will be supporting it on their own.
Even with GPU acceleration though, most PCs today are not powerful enough to run HPC apps in production mode. But they can still provide a platform for application development and testing. As GPUs become more powerful and more integrated into the CPU, the distinction between technical workstations, personal supercomputers and high-end PCs is likely to blur. Within a few years, it wouldn’t surprise me to see standard PCs running HPC applications at a sustained performance of 3 to 5 teraflops.