This article actually discusses the question: is GPGPU a solution for the masses, or is it for niche-products? For the latter open standards matter a lot less, as you will read.
If you watch the below video on sale&marketing by Victor Antonio, then you get what is so difficult about open standards: It pushes all companies using the standard into a focus on becoming the best. Indeed, survival of the fittest may be the base of (true) capitalism and giving the best products. Problem is that competition on price is not safe for the future of the company.
The key is specialisation, or creating unique value. The below video discusses this. The difference between “a feature” and “unique value” is a discussion on its own, you really should have with your team on your own products.
NVIDIA has exactly done that: they created unique value with CUDA (and everything around it).
So why are hardware-vendor choosing for an open standard and not make their own CUDA? Mostly because they think they can compete with a different Unique Value.
Let’s look at it from a different view: how the customers of hardware-vendors want to have the actual power of control and how NVIDIA has reversed the roles.
“Commodity enabling technologies”, “Controlled enabling technologies” and “Unique solutions”
I’m not sure if I have found the right words, but I hope you stay with me. Effectively I split Value into controlled and commodity Enablers, and couple Unique Value to Products.
In IT there are basically two types of technologies: enabling technologies and solutions. The difference is that the first is what people expect to be available to be able to do the the latter. So to be more precise: enabling technologies become a commodity and solutions must be unique.
The line between the two is always shifting. This is very important to be aware of, especially when you are in IT! An OS in the 90’s was a solution, now people don’t want to pay for their OS anymore. Reason is that once it is needed for solutions on top of it, the base has become a commodity. The basic functionality of Photoshop is now free via other software, as most people only want to pay for more advanced functionality. This is the line where open source operates: if a unique solution is created before the line then it struggles & when it is missing after the line, it will become available sooner or later.
The discussion is what is a solution and what is an enabling technology. Let’s look from six points of views, comparing GPGPU-solutions with OpenCL and CUDA.
The providers of enabling technology
Company | NVIDIA |
Commodity enabling technologies | – |
Controlled enabling technologies | CUDA |
Unique Solution | Tesla Accelerators |
Nvidia sells a unique solution (professional GPUs), using a controlled enabling technology (CUDA). More control is good from their standpoint.
Differentiation is CUDA, and this has been their main area of competition the past years. Given their markups, it works very well.
Company | AMD |
Commodity enabling technologies | OpenCL |
Controlled enabling technologies | – |
Unique Solution | FirePro GPUs |
AMD sells a unique solution (professional GPUs), using a commodity enabling technology (OpenCL). AMD chooses to depend on open standards, and with that forcing themselves to compete on unique features and price. In the end, the customer relationship becomes most important here.
Differentiation is (currently) done by becoming the broad supplier of solutions, such as ARM-chips and SeaMicro high performance servers.
Hardware products using the enabling technologies
I chose not to name a product vendor for this example and to keep it a bit more general.
Company | Company Y |
Commodity enabling technologies | – |
Depending enabling technology | CUDA |
Enabling product | NVIDIA Tesla card |
Unique Solution | Product Y |
The resulting product sold to the customer is a combination of NVIDIA hardware, NVIDIA IP and the company’s own product Y.
Once the end-customer wants to use other hardware, it also needs to switch solution-supplier. As there is no commodity-escape, a competitor will be able to deliver faster. NVIDIA has an incentive to support their customer in selling, but the risk is al for the company Y.
Company | Company X |
Commodity enabling technologies | OpenCL |
Depending enabling technologies | – |
Enabling product | AMD or Intel accelerator |
Unique Solution | Product X |
As company X can switch vendors, it has a stronger negotiation position.
Software products using the enabling technologies
For this example no HPC, but I looked at the consumer market for a more familiar product.
Company | Adobe |
Commodity enabling technologies | – |
Depending enabling technology | CUDA |
Enabling product | Geforce |
Unique Solution | Photoshop |
A few years ago Adobe chose CUDA for speeding up filters in Photoshop, because GPGPU initially was all about solutions and OpenCL was not ready yet. Only customers with a Geforce GPU had the extra speed. This means that for Adobe CUDA is only an enabling technology for NVIDIA hardware.
As OpenCL needs to be implemented for the other GPUs anyway, supporting CUDA is very expensive.
Company | Adobe |
Commodity enabling technologies | OpenCL |
Depending enabling technologies | – |
Enabling product | Geforce, Radeon, Intel Ghraphics |
Unique Solution | Photoshop |
To enable acceleration on AMD and Intel GPUs, OpenCL is now implemented. The potential market size is now much larger. And when Photoshop is to be implemented on ARM-tablets, porting will be done a lot faster.
Also Adobe is a member of Khronos and can talk to the working groups to discuss features that a single vendor would neglect.
The area of focus defines the outcome
Are you creating unique niche-market products, then you’ll look differently at what commodity is. CUDA will be a solution for you, and the above examples make no sense to you as they’re focused on mass-market. If you want to publish software using some heavy computations, you probably look at a larger market and seek commodity technologies.
I think that if solutions have become enabling technologies without becoming commodity, innovation is slowed down with that. I see GPGPU as an enabling technology and not as a solution, and therefore choose to help my customers create products mainly using OpenCL.
The sad truth is that providers of enabling technologies cannot make money with it – it actually costs money. CUDA enables extra sales for Tesla cards, which makes developing CUDA profitable. The question is what happens, when CUDA doesn’t make enough profit for NVIDIA anymore.
As GPGPU becomes more and more accepted, the focus is more on what products we make with it. If you want to know what GPGPU enables, read “The 13 application areas where OpenCL can be used“. This also can be applied to CUDA, as it is very the same in the base.
Do you see GPGPU as a product on itself or an enabling technology? From which context are you seeing this?
From my perspective GPGPU is an enabling technology. An interesting trend to follow from a hardware manufacturing & niche market angle is OpenCL / FPGA integration. This is an area where open standards will likely dominate for niche market product development.