OpenCL delivers on multi-core potential

Robert Hallock (Thrax)

February 4, 2009 2:28 PM ET in News, , , ,

If you’ve never heard of OpenCL, you need to stop whatever you’re doing and read ahead. To begin, we all know that multi-threaded applications have not been as abundant as we had hoped. For those precious few applications that are multi-core aware, few leverage the full potential of two cores, much less the four that have become common for enthusiasts. To combat the disappointing landscape for multi-core computing, OpenCL was developed to standardize parallel and massively-parallel programming and execution.

Based on a modern contemporary of the C language called C99, OpenCL is a framework that rapidly and easily assists developers in the creation of scalable applications. Imagine a single program that could run on GPUs, CPUs, DSPs, and any other execution engine with OpenCL compatibility. Its non-profit overseer, the Khronos Group, hopes that OpenCL will do for multi-core what OpenGL did for graphics, and OpenAL is beginning to do for audio.

Now that we’ve successfully whetted your appetite for a multi-core environment that basically doesn’t suck, take a look at this video demo from SIGGRAPH Asia 2008. One of the first-ever videos to demonstrate OpenCL’s potential, AMD’s FirePro/FireStream created a particle/fluid dynamics application that scales extremely well as additional Phenom II cores are brought online.

There. Are you excited yet?

Share |

8 Comments:

  1. There. Are you excited yet?

    **** yeah I am.

  2. There. Are you excited yet?

    This programmer sure is.

  3. This could lead to some companies wanting to produce more cores. Can we say, 8 working cores?

  4. 8 core chips will be available by the summer. http://icrontic.com/news/8-core-nehalem-xeon-tips-up

  5. 8 core chips will be available by the summer. http://icrontic.com/news/8-core-nehalem-xeon-tips-up

    I could see servers using these amount of cores but I don't understand why they would expand this technology into personal computers. Only a fool would buy a 8 core processor without technology like OpenCL in existence. (Hence little to no market.)

  6. OpenCL is important for addressing one issue with thread concurrency: Scaling across hardware and platforms.

    With respect to desktop software applications, though, OpenCL does little to address the major concurrency hurdles that developers have been facing for decades now.

    Most desktop software applications are inherently synchronous in nature, and this is the biggest problem. There are exceptions, of course: Graphics, encoding, algorithm modeling, data manipulation... But by and large, desktop applications are synchronous. They have to be in order to properly respond to unpredictable user input and other messages from external sources. You click a button, and then the software does something.

    Typically the something that it does is very brief, or it relies on calling something else and then handling the response which requires synchronicity. Then there are moments where desktop applications truly can benefit from concurrency, such as when processing data. The question is: How do we make it easy enough for the developers writing these applications in high level languages (VC++, C#, VB.NET) to make these brief operations concurrent without introducing an implementation and code maintenance nightmare?

    Microsoft is working on some pretty cool stuff for .NET 4.0 that aims to address just that. This shift towards declarative programming with behind-the-scenes concurrency is what is needed to get concurrent threading into mainstream software development, and that is what OpenCL fails to address.

    The thing is that Microsoft doesn't seem to be on board with OpenCL yet. It would be awesome to write a few lines of code in C# that could churn through gigabytes of data on a GPU using a hundred threads. We shall see what happens. If OpenCL becomes widely adopted, and it looks like it will be, then Microsoft may be forced to support it.

    In the short term, we can look forward to the software applications that are traditionally threaded to improve their performance with adoption of OpenCL. Graphical editing and rendering, data crunching, modeling, encoding... These things will all benefit from the opening up of GPU's to desktop software using a unified specification.

  7. rd

    Khaos,

    That is why Apple came up something Called
    Grand Central Dispatch and a language feature called Blocks for C and Objective-C.

    As far Microsoft is concerned they have DirectX 11 which probably will have the same kind of thing that is the reason they won't be adopting to OpenCL. In a way OpenCL is the missing feature of OpenGL.

  8. I could see servers using these amount of cores but I don't understand why they would expand this technology into personal computers. Only a fool would buy a 8 core processor without technology like OpenCL in existence. (Hence little to no market.)

    Yeah without OpenCL even quad core seems somewhat pointless as far as heavy apps are concerned.

Troll-free since 2003 ®