OpenCL Tutorial


OpenCL is a framework for coding in envronments with heterogenous processors. TI uses OpenCL to be able to distribute work from the host processor (ARMv7) to guest processors (DSP, etc). This is supposed to make it a bit easier to leverage the secondary processors within the AM57x CPU. Work is organized into small, independent, paralellizable chunks called kernels. From a coding perspective, it looks more like a fancy form of inter-process communications than managing independent processors.

Alternatively, the Analog Devices SHARC+ architecture provides the processors in more of a peer-to-peer model where once processor has to effectively load the operating system of another processor, boot it, and then communicate manually via shared memory. While I really like coding DSP on the SHARCs, I was unsatisfied with their DSP+CPU architecture and moved to the TI devices. 

If you have no idea what OpenCL is, you can check out the Wikipedia article for a high level summary.

Here are some good videos to help you learn a little more about it. OpenCL is used across a number of different architectures. Since DSP is a bit of a niche market, most of the tutorials are based on offloading vector processing to GPUs. Keeping that in mind, this should entertain you for a little while...

What is OpenCL?

Provided by AMD/ATi