The most important thing you need to develop an OpenCL application is to be able to compile and run your code. If that is what you need to know, then you’re in the right place! Unlike the CUDA development platform, OpenCL is an open standard and is supported on various devices. Anything from multi-core CPUs to integrated GPUs, to dedicated GPUs, and even some more exotic devices like DSPs and FPGAs. Because of this diversity, the development environment is a bit fragmented. There are OpenCL SDKs available from various vendors including Intel, AMD, and NVIDIA. What to do! Continue reading ‘Setting up OpenCL’ »
Archive for the ‘OpenCL’ Category
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.