http://software.intel.com/en-us/blogs/2009/01/21/parallel-programming-talk-opencl-with-tim-mattson/

Parallel Programming Talk - OpenCL with Tim Mattson

By Aaron Tersteeg (Intel) (83 posts) on January 21, 2009 at 3:16 pm

Clay and I talked with Dr. Tim Mattson about OpenCL on the Tuesday January 20th show. Tim is Intel’s go to guy for building solutions and standards for parallel architcture. He is an author, teacher and constant learner.

 

You can download the show at: http://www.blogtalkradio.com/MulticoreSoftware/2009/01/20/Parallel-Programming-Talk-OpenCL-with-Tim-Mattson.mp3?localembed=download
 

But first the news:

I would like to thank the over 1400 people who listened to last weeks show on Haskell. Don Stewart, Haskell Guru and recent author of the O’reilly publication  Real World Haskell”. You can listen to a replay of the show.

The Smoke Technology Demo continues to be very popular. This showcases (that includes source code) is a framework to support n-way threading of game technologies. By properly threading a game it can have more accurate physics, smarter AI, more particles, and/or a faster frame-rate. You can listen to a replay of the January 6th Parallel Programming talk to learn more about Smoke.

Now a recap of the OpenCL talk with Tim Mattson:

Tim Mattson talked about OpenCL The Open Computing Language is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, and other processors. OpenCL includes a language (based on C99) for writing kernels (functions that execute on OpenCL devices), plus APIs that are used to define and then control the heterogeneous platform.

Here are a few highlight from the conversation...

Q: What is OpenCL? Where did it come from?

It came out of the frustration for an ability to use all available resources to solve a problem. The problem was the users had multiple heterogeneous compute resources on both their CPU and GPU. Developers wanted to be able to access them together, not just off load to the GPU for specific tasks. They wanted to have a dynamic resource to send work to available resources. This is what led to OpenCL and this is the problem that OpenCL solves.

OpenCL could also be used for other compute resources on your system including Digital Signal process chips. In fact one of the contributors to OpenCL is the IBM Cell processor group, the chip used in the Play Station 3.

Q: Who else is involved in the OpenCL standard?

You can't talk about OpenCL without talking about Apple. They are the core end users customer that  made this OpenCL happen. The see OpenCL has a solution to solving the problem of tweaking their OS source code every time the CPU or GPU vendors change their hardware. So Intel, AMD, and Nvida got together with Apple to create the straw man. On June 2008 about 24 companies (IBM, Rapid Mind, Nokia, Samsung, DSP vendors, Blizzard, Electronic Arts, etc...) were involved with publishing the framework.

Q: Is this the silver bullet to solve the problem?

It will solve the problem for some people but it is not a slam dunk. In order for a developer to be successful with OpenCL they need to be aware willing to work with all the detailed complex commands for managing all the heterogeneous resources. OpenCL will be great for game developers that have strict latency limits. It is really for the effect layer programmers who will do what it takes to get the best performance.

Q: What is OpenCL like to program?

It creates collections of work items that are spanned out across the system and it does the execution for each collection of operations in a work item. It is a very data parallel like notation with large arrays and work items that conglomerate operations across array elements that can be distributed to available resources to do the computing. Or one can do task parallel computing where you put individual tasks into a task queue. So think of data parallel style computing, very familiar to the CUDA community, but OpenCL includes task parallel computing. So to sum up think OpenCL as data parallel meets task parallel in a very low level abstraction.  

Q: So how are these code compiled? Does it create one BIG FAT binary for all possible platform resources?

OpenCL uses compliers that compile the code into an intermediate representation behind the scenes and then use a back end compiler that runs just in time to create the actual executable for the target platform. In the graphics world this is a very common way of getting the right code to the platform. The graphics world has a lot to teach the HPC people.

Q: What is the current word on performance?

In principal the group expect very high performance. OpenCL is very low level so developers can do what they need to map onto the hardware. The OpenCL spec was released in December 2008. The group has referance implementation that they are working with but at this point they don't have enough mature systems in place to have any really performance studies.

Q: Where can developers go to get more information? What can they do with it today?

The standard has been defined. Developers can download the specification from the Kronos organization web site. Kronos is behind the graphics standards including OpenGL

Probably the first version that people will be able to use will come from Apple in there next major OS X release code named Snow Leopard. They will probably be using it for many of their library and focus on the performance improvements that OpenCL can provide. AMD and NVidea have also announced that they will soon be releasing versions of OpenCL as well. Some times in 2009 we can expect to have multiple versions of OpenCL from multiple vendors. 

OpenCL is a key step in the right direction. There will always be a need for a multilayer solution. OpenCL provides a common base line for higher level language to target OpenCL as a portable intermediate language to run on a very wide range of systems. Keep in mind that one of the key things that limit the progression of a parallel programming language is that it has to have a big enough market to make successful. 

For more information on OpenCL visit the Khronons web site or read the wikipedia article.

The next Parallel Programming Talk show is schedule for January 27th at 8:00AM PST (1600 GMT). Aaron and Clay will be talking with Shobhan Jha of Intel's Tools Group about the experimental programming tools and technology offered on whatif.intel.com

Categories: Multi-Core, Visual Computing

Reply via email to