You might want to get started with OpenCL after working with another parallel computing framework. CUDA, for instance, is pretty nice, and some of its processing flow algorithms are pretty concrete. The way that the main memory and GPU memory copy processing data and results might call to mind some aspects of cloud computing. However, the only GPU systems with CUDA capabilities ship from Nvidia. This isn’t too bad for those who are only working with Nvidia chipsets, and they’re really quite common. However, there’s always going to be someone who ruins the fun by sticking with an AMD or IBM device.
Apple originally developed the Open Computing Language framework, and the non-profit Khronos Group consortium manages it. Since it’s royalty free, developers in a particular organization might want to set up a cloud computing environment to share code and the latest football scores.
This sort of technology is well applied to the world of computer games, where the OpenCL framework’s large distribution base can be particularly useful. GPU chips are used not only to render graphics, but also perform game physics calculations. Nevertheless, that’s not the only way to use the GPU. It can be repurposed for mathematical calculations. Cryptography and computational biology are just a few of the fields that can be given a boost in this way. Everyone would rather write a biophysics formula calculator than a first person shooter, right?
Regardless, one of the best ways to get started is to ensure that the hardware being developed for supports the OpenCL standard. Make sure that you have the right SDK and runtime files, and then you can usually proceed without development without too much trouble. Some experience with C99 might help, but it really isn’t required. C99 was the language that the OpenCL’s computation kernel coding language is based around.
The language in question is extended to use parallelism without too much trouble, which is extremely important when working with these kinds of scenarios. However, advanced options like recursion, bit fields and variable-length arrays are gone. This can actually make it easier to start coding with than the actual C99 dialect.