If you are looking for the samples in one zip-file, scroll down. The removed OpenCL-PDFs are also available for download.
This sentence “NVIDIA’s Industry-Leading Support For OpenCL” was proudly used on NVIDIA’s OpenCL page last year. It seems that NVIDIA saw a great future for OpenCL on their GPUs. But when CUDA began borrowing the idea of using LLVM for compiling kernels, NVIDIA’s support for OpenCL slowly started to fade instead. Since with LLVM CUDA-kernels can be loaded in OpenCL and vice versa, this could have brought the two techniques more together.
What is the cause for this decreased support for OpenCL? Did they suddenly got aware LLVM would decrease any advantage of CUDA over OpenCL and therefore decreased support for OpenCL? Or did they decide so long ago, as their last OpenCL-conformant product on Windows is from July 2010? We cannot be sure, but we do know NVIDIA does not have an official statement on the matter.
The latest action demonstrating NVIDIA’s reduced support of OpenCL is the absence of the samples in their GPGPU-SDK. NVIDIA removed them without notice or clear statement on their position on OpenCL. Therefore we decided to start a petition to get these OpenCL samples back. The only official statement on the removal of the samples was on LinkedIn:
All of our OpenCL code samples are available at http://developer.nvidia.com/opencl, and the latest versions all work on the new Kepler GPUs.
They are released as a separate download because developers using OpenCL don’t need the rest of the CUDA Toolkit, which is getting to be quite large.
Sorry if this caused any alarm, we’re just trying to make life a little easier for OpenCL developers.
Sr. Product Manager, GPU Computing
And this is what we got:
- 38 old samples which are to be downloaded sample by sample, not as one easy SDK. Also the Linux-samples do not even work, as some files are missing.
- The webpage http://developer.nvidia.com/opencl is not linked from any main NVIDIA page and even a Google-search did not find it easily.
- Only 4 out of 38 samples were updated in 2011, where the rest has been from 2010 or earlier. So they surely have not been improved to take advantage of the latest GPU hardware improvements.
- While NVIDIA claims they removed OpenCL to reduce the download size, a search of NVIDIA’s dev-forum for such complaints comes up empty.
- While NVIDIA claims they have made life easier for developers by removing the OpenCL examples from the SDK and instead posting links to them, it is clear that this is lip service. Those links were not even made available until after we started complaining, and previous versions of these same links had much more informative text to help developers. Additionally, no one on the dev-forum is thanking NVIDIA for this decision.
- Did I already mention that the OpenCL-page only had the link to the samples after the complaints started, and previous versions had much more text?
NVIDIA’s position of early GPU computing leadership should not be give way to vendor-lockdown tactics and open standards avoidance. Our goal is to keep the ecosystem honest and focused on standards that move the industry forward. Whatever NVIDIA may have invested in GPU computing R&D to move the industry forward, the developers writing code for their hardware are expending much more and deserve to have their investments maximized through open standards.
Dear Will Ramey, this blog article is for you. My promise is that I will replace this blog-article if you make us OpenCL-developers and standard-supporters happy again.
Quotes from the petition
As of 10 September 2010 there were 100 signatures. 100 developers who want to have industry-wide support for OpenCL.
An industry standard is important:
It’s great that NVIDIA moves ahead with CUDA, but industry-wide OpenCL support is also important. – Anonymous
Better to focus on OpenCL than CUDA. Nvidia has the best OpenCL right now and we use this for all our own applications development, and steer all our industrial partners this way. If Nvidia starts to de-prioritise OpenCL we’ll have to look at using AMD’s GPUs instead. – Simon McIntosh-Smith
Please do not ignore OpenCL, the developer community see this as a better tool-set overall for the industry. CUDA is great but not what we need going forward, I have always been a massive fan of Nvidia and would love to see the developer tool support that you have given CUDA available for OpenCL and I’m sure I speak for many of us who rate your hardware as the industry leader. – Alexander Bath
(…) Proper support for OpenCL (1.2 and on) would allow these customers to keep using NVIDIA hardware, rather than finding other hardware providers. All I ask, is that you keep that in mind, when considering this petition’s simple request. – Liad Weinberger
As head of the OpenCL-based linear algebra library ViennaCL, seeing NVIDIA slowly undermining an industry standard is unacceptable. If, in the long run, NVIDIA GPUs may even cease to support OpenCL, this would require our research codes to be migrated to a proprietary framework in order to support NVIDIA GPUs. Doing the same for every other GPU supplier would be ridiculous and a clear waste of (scarce) research resources, and that’s exactly why we have OpenCL. Thus, I request to reintegrate the OpenCL samples into the CUDA SDK. – Karl Rupp
Dear Nvidia, The sample code in your SDK has always been a great learning resource and the first stop in figuring out if drivers are working correctly. As OpenCL becomes more and more pervasive it would be sad to loose your library of examples – especially as it seems that you might abandon OpenCL (?). With kind regards! – Bjoern Knafla
Understanding NVIDIA hardware:
The OpenCL SDK examples are very helpful in understanding some of the nuances of OpenCL development on NVIDIA hardware. Please continue to include and enhance these samples in your SDK. – John McInerney
Cuda will sell itself, if it is the better choice:
Agree add the samples and let us decide what to use, enforcing Cuda could end up bad if Cuda is awesome, people will use it. – Alvaro Castañeda
Coming up with an alternative solution:
Or make OpenCL SDK. – Bernhard Stader
To sum it up:
Please do not shoot yourself in the foot by doing this. – Pavan Yalamanchili
The message is clear
The good news is that NVIDIA cannot escape OpenCL, as it is possible to get OpenCL-kernels loaded trough LLVM. The current problem is that learning the specifics of Nvidia’s latest hardware is best accomplished today by working with their CUDA-samples, not OpenCL-samples. So NVIDIA’s focus on CUDA over OpenCL is leading to more and more developers sinking time and energy into a vendor-locked mindset.
At IBC’12 I spoke to people at the NVIDIA booth and got a nice quote: “The actual porting to the gpu is a snap. The optimisation is the time-consuming part”. So show us how the second part is done best in more languages than just CUDA.
The petition requested this: “We, OpenCL developers, humbly request that OpenCL samples again be included in the SDK. Industry standards like OpenCL help in building up a bigger market for GPU computing, and will be beneficial to NVIDIA in the long term.” – and this request is now signed by 100+ people. We now request NVIDIA to have an official statement on the matter.
Dear Will Ramey, could you show us what is done to make life a little easier for OpenCL developers?
Keeping the pressure
NVIDIA also has an ARM-product ‘Tegra’ and while there is not a real statement on OpenCL-support, NVIDIA’s dev-boards only support CUDA. The mobile market has always been very open to standards leading to much innovation and the generation of new companies with bright ideas – so we should do everything to keep it that way.
If you not have done yet: sign the petition. Also if you are a CUDA-developer, an alternative like OpenCL has many advantages – mostly long-term. The petition will remain open to keep repeating the message that short-term profit is in closed software, and the long-term profit is in open source and open standards.
Download removed samples & docs
What I understand is that distribution of the unmodified SDK is allowed, if the license is included.
View the LICENSE before downloading. If you do not agree, you cannot download the SDK.
- Linux (mirror) – see comments for more info
- Windows 32.
- Windows 64.
- OpenCL programming Guides (5 PDFs).
If you have mirrors, let me know.