News AMD announces unified UDNA GPU architecture — bringing RDNA and CDNA together to take on Nvidia's CUDA ecosystem

Page 4 - Seeking answers? Join the Tom's Hardware community: where nearly two million members share solutions and discuss the latest tech.
coalesced around nvidia rapidly as they did with 8086 and Intel.
Cloners coalesced around x86 because the big name adopter was IBM. The IBM platform was built from commercially available components and could be easily copied.
The only proprietary element of the IBM PC was the BIOS software and at the time there were no software patents. Copyright was the only protection.

Cleanroom Design - redesigned implementation

I can’t recall which company but an enterprising cloner company employed a team to analyse the chip operation, feed it inputs - record the outputs, rinse and repeat until all eventualities are covered. From that list a specification was drawn up. Those guys were finished and left the project so that there was no contact with a second team. The second team programmmed a functionally equivalent bios chip. The flood gates opened and the cloners were let loose. The rest is history.

Nvidia weren’t the first to the party with GPGPU implementations, openGL and DirectX, others before were producing limited software interfaces BUT they did happen across a Stanford engineer who had implemented a solution on early GeForce GPUs, employed him, embraced and extended his ideas and developed CUDA. Following this was the acquisition of Physx giving them more tools to play with.

CUDA had greater scope in the earlier days of its existence than its competition, was more focussed and made the integration its routines into different development languages relatively pain free. It gained traction.

Today, it is difficult to depose the GPGPU king, there has to be a compelling reason.. or invalidate software patents
 
Last edited:
I can’t recall which company but an enterprising cloner company employed a team to analyse the chip operation, feed it inputs - record the outputs, rinse and repeat until all eventualities are covered. From that list a specification was drawn up. Those guys were finished and left the project so that there was no contact with a second team. The second team programmmed a functionally equivalent bios chip. The flood gates opened and the cloners were let loose. The rest is history.
Not sure what you're referring to, but BIOS is just code on a ROM chip. You can pop it in a standard reader and disassemble the code, if you want to see how the BIOS talked to other peripherals in the system. The BIOS API was just a set of interrupts that were documented for applications to use.

Nvidia weren’t the first to the party with GPGPU implementations, openGL and DirectX,
You could use programmable shaders to do computation. That's what people often did in the early 2000's. Then, came more general programming frameworks, like Sh and Brook. You can read some about it, here:

they did happen across a Stanford engineer who had implemented a solution on early GeForce GPUs, employed him, embraced and extended his ideas and developed CUDA.
I guess you mean Ian Buck? He was one of the developers of BrookGPU, mentioned above. Sh was developed at the University of Waterloo.

CUDA had greater scope in the earlier days of its existence than its competition, was more focussed and made the integration its routines into different development languages relatively pain free. It gained traction.
Competition? Well, a company called RapidMind commercialized Sh. AMD's CTM (Close To Metal) used Brook+. I think both were more primitive than what CUDA envisioned.

Before long, OpenCL came along. However, it trailed CUDA in what functionality it provided and some hardware vendors dragged their feet on implementing newer versions of the standard. Nvidia gets a dishonorable mention, due to implementing only as far as v1.2 until about 3-4 years ago. AFAIK, they still don't support it on their embedded SoCs, for no good technical reason.

Today, it is difficult to depose the GPGPU king, there has to be a compelling reason.. or invalidate software patents
I think it's not patents which sustain their dominance. Otherwise, AMD wouldn't have been able to develop HIP. oneAPI is a different, functionally-equivalent implementation that doesn't seem materially worse and should therefore run afoul of any key patents, if that was the issue.

I think some of Nvidia's staying power is vendor lock-in, from their proprietary APIs, and some of it is just down to having robust and well-tuned products that provide industry-leading performance.
 
Additionally, microprocessors providers understood to facilitate adoption of their solutions develop the software necessary to make utilization of your designs simple for programmers.
This wasn't true, until somewhat recently. Back in the 80's and 90's, all the tools you'd use to write software for x86 typically came from 3rd party software companies. Intel just publish the specifications. Intel did provide their own compiler, since a long time ago, but it was mainly for benchmarking and most developers didn't use it.

These days, Intel and AMD do contribute directly to the Linux kernel and open source compiler projects, in order to ensure good software support of their new CPUs at launch. However, I think that's more of a development that's tied to the Linux ecosystem. For Windows they do write some device drivers, but that's about it.

I’m not sure one ring or api to rule them all would ever work out for everyone such as openCL.
I think the main reason OpenCL didn't happen was that the critical mass of customers never materialized who demanded it. Microsoft made Direct3D happen through their sheer clout. If a GPU didn't support Direct3D, it had no future in the gaming market. Vendor-specific APIs, like 3dfx' GLiDE, quickly died out.

As I mentioned, Google fulfilled roughly the same role for Vulkan - all SoC vendors had to support it, if they wanted to run Android. That just never happened with OpenCL. All of the big software companies were greedily trying to push their proprietary compute APIs.

And exactly as the market is right now may have been inevitable.
If something is inevitable, that means no other outcome is possible. We've seen other examples of API standards, like for 3D graphics (but many other examples exist). Why do you think that couldn't have happened with GPU compute, or is this just a case of hindsight bias?

Given the state of affairs how do you see AMD and others being able to compete?
Good question. I don't know. The deep learning frameworks people use are fairly common. So, the first step is just to make sure the dominant ones run well on your hardware. That's basically done. The next step is to try and provide streamlined tools and infrastructure, like Nvidia has been doing, in order to try and compete with their ecosystem. At some level, the whole API question of what sits beneath these frameworks is sort of a side-story or even mostly a non-issue, at this point.

Jim Keller recently described CUDA as a swamp, instead of a moat. Of course, as the CEO of an AI chip company, he's somewhat biased, but I do think he has a point. What I think he means is that CUDA is a very general API and devices which support it need a lot of general functionality that's not necessarily very useful for AI. So, it can turn into baggage that actually bogs Nvidia down, compared to other companies which lack it.

it seems to be past time of simply standard interface as you suggested HIP What’s the incentive if 90% of the market is an nvidia?
$$$, which is the same reason companies like Google, Microsoft, and Amazon are building their own AI accelerators.
 
Not sure what you're referring to, but BIOS is just code on a ROM chip. You can pop it in a standard reader and disassemble the code, if you want to see how the BIOS talked to other peripherals in the system. The BIOS API was just a set of interrupts that were documented for applications to use.
Agreed, but it was the open nature of the PC hardware, i.e. the hardware was all commercially available, nothing proprietary, that made the IBM PC cloneable. Had the BIOS chip implementation been patented it would have been much harder to copy for legal reasons. The clean room reverse engineering ensured that copyright was not infringed. (There is more than one way to cook a curry).

Just putting the chip into a reader and disassembling the code would potentially breach copyright, redeveloping the code with no sight of the original maintains IP rights.
 
This wasn't true, until somewhat recently. Back in the 80's and 90's, all the tools you'd use to write software for x86 typically came from 3rd party software companies. Intel just publish the specifications. Intel did provide their own compiler, since a long time ago, but it was mainly for benchmarking and most developers didn't use it.

These days, Intel and AMD do contribute directly to the Linux kernel and open source compiler projects, in order to ensure good software support of their new CPUs at launch. However, I think that's more of a development that's tied to the Linux ecosystem. For Windows they do write some device drivers, but that's about it.


I think the main reason OpenCL didn't happen was that the critical mass of customers never materialized who demanded it. Microsoft made Direct3D happen through their sheer clout. If a GPU didn't support Direct3D, it had no future in the gaming market. Vendor-specific APIs, like 3dfx' GLiDE, quickly died out.

As I mentioned, Google fulfilled roughly the same role for Vulkan - all SoC vendors had to support it, if they wanted to run Android. That just never happened with OpenCL. All of the big software companies were greedily trying to push their proprietary compute APIs.


If something is inevitable, that means no other outcome is possible. We've seen other examples of API standards, like for 3D graphics (but many other examples exist). Why do you think that couldn't have happened with GPU compute, or is this just a case of hindsight bias?


Good question. I don't know. The deep learning frameworks people use are fairly common. So, the first step is just to make sure the dominant ones run well on your hardware. That's basically done. The next step is to try and provide streamlined tools and infrastructure, like Nvidia has been doing, in order to try and compete with their ecosystem. At some level, the whole API question of what sits beneath these frameworks is sort of a side-story or even mostly a non-issue, at this point.

Jim Keller recently described CUDA as a swamp, instead of a moat. Of course, as the CEO of an AI chip company, he's somewhat biased, but I do think he has a point. What I think he means is that CUDA is a very general API and devices which support it need a lot of general functionality that's not necessarily very useful for AI. So, it can turn into baggage that actually bogs Nvidia down, compared to other companies which lack it.


$$$, which is the same reason companies like Google, Microsoft, and Amazon are building their own AI accelerators.
Not hindsight biased , but the market in technology is consistent, let's look at the pattern. Generally, for cost, interoperability, time-to-market, generally some behemoth forms in any given domain. Consider the nature of computing the power is in the ability interface between data suppliers and consumers in order to perform a function to derive a usable result for a user. This in a nutshell is what computing boils down. So if the market doesn't coalesce around 1 or 2 key players this basic driver becomes very difficult. Especially, if we are getting down to the nitty gritty of bits and bytes. This is why I say where we are with Nvidia was pretty much inevitable. If not them it would have been someone else ... forget the merit of particular technologies and consider the ecosystem of computing , marrying hardware and software, and it's inevitable. NOt saying it had to be Nvidia but it would have been someone. Of course we have other use cases that don't follow this model/pattern but seems the GPU space is following this pattern.

I'm no expert on OpenCL, maybe it could have been the one, my point is that some framework would have become dominant for the sake of the market. And it's rarely the guy who's trying to be everything to everyone but rather one of the key players like a Nvidia who has the ability create a full stack solution that allows the most compatibility, fastest time to market, and takes advantage of the existing ecosystem. Wasn't nvidia involved with OpenCL? The point these aren't just technical issues at play.

As the last comment on AI accelerators , Google, Amazon, Microsoft are building their own .... but at the end of the day Nvidia is monopolizing on the hardware front irrespective of that accelerator... again creating a fullstack solution , that considers the entire ecosystem and business drivers.

Interesting times. Im pretty sure most everyone has more questions than answers?