Jensen Huang has been saying in various interviews, etc for years that Nvidia is just as much a software company as a hardware one. It's hard to find great sources because these comments come from old interviews but for some time now he has increasingly talked about Nvidia's > 15 year investment in CUDA, how their engineer spend has increasingly been on software, how and why software and hardware needs to be approached strategically and holistically with focus on functionality, end-user usability, etc.

The challenge for AMD especially is they're not a software company. In fact, after six years of trying to use ROCm and shaking my head every time (as recently as this week) I'm convinced they just don't get it and I'm not sure they ever will. It's not in their DNA and even a lot of die-hard desktop AMD gaming users frequently complain about things as basic as a Windows driver.

Nvidia certainly isn't perfect but the fact is you have a very good chance of taking anything with Nvidia stamped on it, installing the driver, and a docker command later you're running whatever. Pascal laptop GPU to Hopper H200 are all supported up to and including CUDA 12. Universally, without exception, from even before the hardware is launched even when it means more-or-less backporting support for it (see Hopper and CUDA 11.8). The U in CUDA stood for unified and they've incurred the software and hardware expense to enable this across their entire product line (without exception) for over a decade. Meanwhile ROCm just added support for their flagship consumer GPU (one year after launch) to ROCm 6.0. That brings their total number of officially supported GPUs to 10. Not 10 families, literally 10 SKUs (more or less). CUDA is what, at least 100?

Of course there are hacks to "support" officially unsupported GPUs but they're just that, hacks (environment vars to pretend your card is something else). You go from already shaky ROCm to "let's see when this is going to randomly crash even if I can kind of get it to run" ROCm.

It's truly mind boggling. Consider their ROCm docker images[0]. They've had ROCm 5.7 images with Python 3.10, which is more or less the "standard" python ver targeted by most projects. Great, they released ROCm 6.0 for the GPU they launched a year ago! Wait, it uses Python 3.9?!? Try firing up something as basic as oobabooga/text-generation-webui. It blows up immediately because Python 3.10.

What kind of organization standardizes on a Python release and then uses an older version for a subsequent base software release? The further you dig into ROCm the more you see things like this that are (frankly) clownish. If I seem frustrated it's because I'm rooting for them. I've spent money on their hardware in attempts to make reasonable use of ROCm since Vega. Every single time I come away wondering how anyone can take this seriously, power the system off, and then get back on my Nvidia/CUDA hardware so I can actually get something done. It's a combination of head shaking and actually laughing out loud.

The challenge here is CPU vs GPU. As we all know x86_64 is x86_64 in terms of software. Obviously there are additional instruction sets, etc but generally speaking anyone can take a drive out of an Intel system, put it in an AMD system, and it will more-or-less boot and run without issue. AMD CPUs are phenomenal because AMD doesn't have to do much software work (if any) to enable that.

This is how they've been able to do so well (rightfully so) in competing with Intel on CPU. GPU/GPGPU is a completely different animal and that's why after six years of ROCm they have single digit percentage market share in GPGPU.

What makes this even more perplexing is they famously beat the pants off Intel on 64-bit (haha, Itanium). I'm not sure what happened to them since or what's going on with this GPU situation.

Nvidia is a monopoly and that's never good. However, it's not as though they got there by holding guns to people's heads. They have consistently and reliably delivered products (however "abusive" and price manipulated) that get the job done. For 15 years.

AMD makes excellent and very capable hardware. As my pile of AMD GPUs from the past half-decade illustrates that doesn't mean anything if you don't have the most basic of software to actually utilize it.

If I was an AMD hardware engineer I would be screaming at the software people. I can't imagine how frustrating this must be for them.

[0] - https://hub.docker.com/r/rocm/pytorch/tags