Intel’s SDK for OpenCL Applications

Intel SDK for OpenCL

The Intel SDK for OpenCL Applications 2012 provides development environment for OpenCL applications on Intel Architecture for Windows and Linux operating systems. This SDK includes code samples, development tools, an optimization guide, and support for optimization tools.

OpenCL is an open standard for a unified programming model supporting both CPU and processor graphics compute devices. It is designed to be used for highly data-parallel applications and for visual computing applications including video, media, and 3D content.

The Intel SDK for OpenCL Applications 2012 supports the OpenCL 1.1 full-profile on 3rd generation Intel® Core processors with Intel HD Graphics 4000/2500 across both CPU and Intel HD Graphics.

Video Tutorials

Intel’s engineers presented a three part webinar series on writing applications using this SDK. Here are the links for the same:

  1. Getting Started with Intel SDK for OpenCL Applications
  2. Writing efficient code for OpenCL Applications
  3. Creating and Optimizing OpenCL Applications

This listing was originally posted here, however the links on the page are dead and above links work.

Is the Future Fine-Grained Or Coarse-Grained Parallelism?

By Andrew Binstock of Dr. Dobbs Journal

In his current editorial, our esteemed Dr. Dobb’s Editor-in-Chief Andrew Binstock discusses whether or not parallel programming will ever be taken up by the masses. He comes to the conclusion that (*spoiler alert*) the multiple cores in his devices will be more likely be used to run multiple and separate processes rather than a single, multithreaded process.


I can’t really disagree with his conclusion. When I first encountered parallel programming, it was in the context of scientific and technical computing. These areas of endeavor will always need more and more computational power and parallelism provides the excellent means to provide an ever-increasing number of relatively cheap processing cycles.


As multicore processors began to be announced, I had to wonder if there would really be much need for them. My test for the usefulness of just about any new-fangled technology is whether or not my 75-year-old mother would be able to get any benefit from it. I had a hard time coming up with a reason for her to invest in a multicore processor. She sends and reads e-mail, surfs the Interwebs, and keeps up with her grandkids via Facebook. Not much need for multiple cores within that scenario. Even so, I could easily see where multiple processes (coarse-grained parallelism), each running on separate cores, could give her a throughput benefit, as Andrew points out.


Continue reading at source

The Heterogeneous Programming Jungle

Very informative article about Heterogeneous Programming by Michael Wolfe, Compiler Engineer, The Portland Group, Inc.

The heterogeneous systems of interest to HPC use an attached coprocessor or accelerator that is optimized for certain types of computation. These devices typically exhibit internal parallelism, and execute asynchronously and concurrently with the host processor. Programming a heterogeneous system is then even more complex than “traditional” parallel programming (if any parallel programming can be called traditional), because in addition to the complexity of parallel programming on the attached device, the program must manage the concurrent activities between the host and device, and manage data locality between the host and device.

Source