Print
Hits: 6562

What does that mean? And what is OpenCL?

This years SC was abuzz with co-processor HPC news. Take a look at how many awards went to the CUDA projects. Developments with co-processors, and GP-GPU's in particular, are moving at a fast pace. Success has been driving this movement and in a very short time we have had more than a few ways to program GP-GPUs (CUDA, Brook+, RapidMind, etc). However, as with any new software paradigm, investing too much time in a non standard approach can be risky. Plus, CUDA and Brook+ only addressed the co-processors.

To help with the issue, the Khronos Group has released the OpenCL specification. Initially OpenCl was conceived by Apple Inc. (which holds trade mark rights), and established as standard by Khronos Group in cooperation with others.

From the OpenCL web site "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"

There you have it. Remarkably is the whole standard process was started in June of this year. The heavy weights are behind it (that includes the two big GP-GPU vendors: NVidia Announcement and AMD/ATI).

So is the parallel computing problem solved? Not completely. OpenCL goes a long way to assist in creating portable parallel code. According to the OpenCL overview, it is a "Low Level High Performance But with Silicon Portability" and "Approachable, but primarily targeted at expert developers" My sense is things like CUDA or Brook+ may be easier to get ones arms around, while OpenCL requires a bit more attention to detail. Plus, we are talking about running on a single motherboard. OpenCL is not a cluster programming language.

OpenCL is welcome news. It does make investing time in a GP-GPU programming project a bit more portable, which means a safer bet.