In the world of GPGPU we have currently 4 players: Khronos OpenCL, NVIDIA CUDA, Microsoft DirectCompute and PathScal ENZO. You probably know CUDA and OpenCL already (or start reading more articles from this blog). ENZO is a 64bit-compiler which serves a small niche-market, and DirectCompute is built on top of CUDA/OpenCL or at least uses the same drivers.
Edit 2011-01-03: I was contacted by Pathscale about my conclusions about ENZO. The reason why not much is out there is that they’re still in closed alpha. Expect more to hear from them about ENZO somewhere in the coming 3 months.
A while ago there was an article introducing OpenCL by David Kanter who claimed on page 4 that DirectCompute will win from CUDA. I quote:
Judging by history though, OpenCL and DirectCompute will eventually come to dominate the landscape, just as OpenGL and DirectX became the standards for graphics.
I twittered that I totally disagreed with him and in this article I will explain why I think that.
If we ask Google Trends then we get the below graph. The article started with a screenshot from Tweetdeck telling the same message with showing zero recent tweets about DirectCompute. Last week I saw 4 and just after the moment of writing there is only my tweet about this article; click on the image to see the current state.
Edit 2011-01-04: CUDA was launched in November 2006, so the line should be lowered by 10 (thus be halved) to remove the other CUDAs. The total volume is what is counted, since DirectCompute was introduced in Q3 2009, we should only look to last year instead from 2004. For 2010 the relative (and corrected) volumes are: directcompute 1.00, opencl 15.00, cuda 45.00 (90.00/2). I searched for “nvidia cuda” too, but Google Trends does not work well with two words compared to one word. The lowered line doesn’t change my conclusion: CUDA is still much bigger than DirectCompute. Sorry, I don’t know how to solve “the other cuda” search in Bing, discussed below.
Microsoft-specific products are discussed on MSDN, so I checked there too. On msdn.com I found 4.5 times as much about DirectCompute as CUDA and OpenCL: 774 pages against respectively 174 and 160. More important is that their own instruction-videos for learning DirectCompute are not really up-to-date; the last comments and videos are from July/August 2010.
Using Microsoft Bing for searching there are 1,690,000 pages for CUDA, 679,000 for OpenCL and 333,000 for DirectCompute. It seems one can make subjects more popular by splitting the word and adding quotes: “open-cl” gives 38.5 million pages and “direct-compute” 6.9 million. I don’t know what to conclude from this results, except that according to Bing OpenCL is twice to five times as popular as DirectCompute, and Bing still missed a lot of articles about CUDA.
While their original cash-cow products like Visual Studio, Office and Windows improve each version, Microsoft has a hard time to introduce new products the past five years, and all of them need a lot of marketing and sponsoring to push them. Examples are PDF-competitor XPS and Flash-competitor Silverlight (The two links are to Google Trends). There are many possible reasons why this is, discussed in the blogosphere and on forums, but it definitely bothers DirectCompute’s introduction.
Backup & Support are the most important ingredients to make a technique a standard. Both CUDA and OpenCL have good support in Microsoft Visual Studio, since AMD, NVIDIA, Intel and others have provided debuggers, code-highlighting, tutorials, etc. to be used with Visual Studio. DirectCompute’s support in Visual Studio has no major advantages over that of CUDA and OpenCL. Above that there is support for OpenCL in other IDEs, like Apple’s Xcode and Qt Creator.
OS-support is also more and more important. Since GPGPU is cross-platform, Apple OSX has already a lot of GPGPU built-in, ARM is a growing market and the HPC-world is Linux-dominated, there is a growing demand for software that is cross-platform. To give an impression about the big changes in the market: next year probably more smart-phones will be sold than PCs.
While I thank David Kanter for writing his nice and must-read article for beginners in OpenCL. On the future of OpenCL he concluded:
Despite its flaws, OpenCL holds great promise as an open, compatible and standards based approach to parallel computing on GPUs and other alternative devices. At present though, OpenCL is still in the very early stages with limited hardware and software. However, it has broad support throughout the PC and embedded ecosystems, and is just starting down the path to maturity as a common API for software developers. Judging by history though, OpenCL and DirectCompute will eventually come to dominate the landscape, just as OpenGL and DirectX became the standards for graphics.
I feel obliged to rephrase the last part:
Judging by history, each market is lead by a strong company backed proprietary standard and an widely backed open standard, like OpenGL and DirectX became the standards for 3D-graphics. Therefore OpenCL and CUDA will keep dominating the landscape.
If I were Microsoft, I would change DirectCompute to be able to load OpenCL-kernels natively and focus on easy initialisation and good integration. Such decision would attract more developers to Windows, Visual Studio, dotNET than the current approach.
I love a good discussion, since there cannot be just one true opinion – feel welcome to put your thoughts about DirectCompute’s future in the comments.