There was some guy at Microsoft who understood IT very well while being a businessman: “Developers, developers, developers, developers!”. You saw it again in the mobile market and now with OpenCL. Normally I watch his yearly speech to see which product they have brought to their own ecosphere, but the developers-speech is one to watch over and over because he is so right about this! (I don’t recommend the house-remixes, because those stick in your head for weeks.)
Since OpenCL needs to be optimised for each platform, it is important for the companies that developers start developing for their platform first. StreamComputer is developing a few different Eclipse-plugins for OpenCL-development, so we were curious what was already there. Why not share all findings with you? I will keep this article updated – know this article does not cover which features are supported by each SDK.
NVIDIA
Even with a high focus on CUDA, OpenCL is bundled with most dev-tools too. At the official OpenCL-page it looks like they did not finish the page, headed as “What is CUDA?”. The links are broken, but de OpenCL-zone is easily found with Google (old link does not work anymore, in case you had bookmarked that site). I of course don’t like the presentation of OpenCL as secondary, but it is their choice.
Here is all there is available:
- OpenCL is silently a part of the CUDA-SDK. It includes code samples and the Visual Profiler (all cross-platform).
- Documentation: Programming Guide [PDF] August 2010, Best Practices Guide[PDF] May 2010, JumpStart Guide[PDF] April 2009.
- Developer Forums – NVIDIA-hardware focused.
- nSight, a profiler for Visual Studio.
OpenCL-support is standard on all current drivers, so after downloading the SDK you can start developing. On Linux there is no IDE-support, but on Windows it is well integrated in Visual Studio.
AMD
AMD is currently the strongest supporter of OpenCL. They have many tools available and loads of free high quality up-to-date documentation.
Their OpenCL-zone covers most you can find about OpenCL.Here is the full list:
- OpenCL SDK, called the Accelerated Parallel Processing (APP) SDK, which contains a APP Profiler and APP KernelAnalyzer for Visual Studio, and Demos & Sample Applications (all cross-platform).
- Documentation: Getting Started with OpenCL, Programming in OpenCL, Articles & Papers, University Programs. They’re all well written and up-to-date.
- Tools and Libraries – they have partnered up with many tool-makers. These are their own:
- Aparapi – an alternative way to program easy OpenCL-programs in familiar Java-syntax.
- Core Math Library for Graphic Processors (ACML-GPU) – AMD-GPU accelerated math routines.
- Developers Forums. AMD-hardware focused.
Always have been curious if StreamHPC had to do something with this: “Note: ATI Stream Technology is now called AMD Accelerated Parallel Processing (APP) Technology.”
Their drivers are more up-to-date than NVIDIA’s; can you remember we complained last year AMD was lagging behind? Things can change fast in this world.
Intel
Intel just started in the OpenCL-market and focuses on Windows only; Linux and OSX-support is not public (if ever).
- The OpenCL 1.1 SDK holds documentation, example-programs and some tools:
- Graphics Performance Analyzers (GPA) Task Analyzer, to trace data.
- VTune™ Amplifier XE 2011, to analyse compiled OpenCL code.
- Support forums. Guess what: Intel-hardware focused.
The SDK can be run from the command-line and from within Visual Studio.
IBM
They have just released their OpenCL 1.1 SDK after being silent for a long time. As Windows does not run on their processors, the SDK is Linux-only. Unofficially it works for PS3 too, I’ve been told. Three packages are provided: The SDK, code-samples and minimal documentation. There is no IDE-support, just the good old command-line.
The developers forum is IBM-hardware focused; but it also discuses a lot of common stuff around OpenCL itself – just like the other forums.
Conclusion
It is clear Windows is the best targeted platform here. OSX, Linux and others from the UNIX-family have just little support. Apple Xcode seems not to be straightforward to set up for OpenCL-development, if I read the forums and blogosphere – let me know if it works out-of-the-box nowadays. There is many other software like alternative debuggers (i.e. Gremedy gDebugger and OCL EMU), wrappers, code-analysers, IDE-support, etc., etc., but these are not the first thing a developer gets in front of him/her when getting the SDK for the available hardware. The last word about developer support is not said, and we at StreamHPC will have a say in it.
If you want more independent information about developer-support, go to the Khronos OpenCL Forums.
When developing OpenCL applications you need hardware from the top 3 vendors Intel, AMD, Nvidia. You never know what your customers are running.
However, what system configuration do you recommend in developing OpenCL applications.
Currently (June 2011) I recommend an Intel SandyBridge CPU (optionally with integrated GPU) and an AMD Radeon HD68XX or HD69XX for good OpenCL performance. But watch AMD’s Fusion platform closely – in a few months I’ll probably recommend their CPU.