OpenCL and Microsoft C++ AMP
This is a significant step forward in the era of accelerated parallel processing, and yet repeatedly we ask “But why is that a good thing Mark? Don’t you want everyone to use OpenCL? Surely that’s the best way to access the power of AMD’s GPUs?”
While OpenCL is an excellent choice for GPU compute, the goal is to ensure that as many developers as possible are creating as many applications as possible that leverage the awesome potential for compute provided by a contemporary GPU. OpenCL has many benefits: it is an open standard, and applications that use OpenCL have the potential to be used across a variety of operating systems and devices. Using OpenCL, it is also possible to achieve highly effective use of GPU and CPU capabilities. While these attributes are very important, we need to also understand that they are not the only important attributes for many developers.
On a CPU, best performance, for a short piece of code executing on a single core, can be obtained by writing in assembler. There are developers that still do this. However, many more developers use C++. Programmer productivity is higher with languages like C++, and performance can be a little lower, but without languages such as C++, many applications are simply not feasible. A similar argument can be made for high-level languages such as Java or the .NET family.
AMD GPUs support both OpenCL™ and DirectCompute, and C++ AMP is an important new capability bringing the power of GPU compute to a broad array of potential applications. I foresee a world where many current popular programming paradigms, perhaps with extensions, will leverage GPU compute, but in a way that minimizes programming complexity, and yet still obtains a useful boost from the GPU. We already see this in Aparapi, an API for expressing data parallel workloads in Java, and others are developing additional novel approaches for other popular programming languages/environments.
With C++ AMP, Microsoft is illuminating a path to GPU compute for everyone.
This article was posted by Mark Ireton of the AMD team, on the 7th July 2011. It seems that both NVIDIA and AMD are really interested in the coming extension for C++ programming, namely C++ AMP, that is expected to be announced by Microsoft soon. Share this post on OpenCL and Microsoft C++ AMP extension