Back in the day, the reason why people kept targeting Flash is because all the other alternatives were worse. If you recall, the only thing that made a difference was mobile, where Flash ended up being a liability due to performance and battery lifetime issues. And even then it took a company like Apple, which could rely on its cult status to draw the hard line on mobile Flash, ship iPhone without it (unlike Android which had it, warts and all), and steadfastly refuse to even consider adding it, forcing everybody else to choose between using Flash and supporting the lucrative iPhone ecosystem.
I'm not even sure what the equivalent would be for CUDA tbh.
Apple could just, talk to Khronos again. In any protracted discussion of "how can the industry kill Nvidia", we always circle back around to the lack of communication. There was an era where Apple, AMD and even Nvidia all worked on Open Source non-CUDA acceleration primitives. There were working drivers, (a handful of) users, and bindings in multiple native languages. All they needed was industry applications, which would arrive with the crypto mining boom that Nvidia profited off of hand-over-fist. And by then, Apple refused to cooperate with their industry partners, and refused to support OpenCL on iPhone GPUs or Apple Silicon. Metaphorically, this would be like Apple refusing to implement HTML because they wanted to promote their own Flash alternative.
Nvidia won because they don't deal with this level of asinine infighting. If Khronos could bring back a level of mutual respect to their consortium, they could present a serious threat. Apple is the only business still on their high horse; AMD, Intel and Qualcomm all recognize that they need to cooperate.
Khronos is where APIs go to die, and new ideas stagnate.
OpenCL 2 turned into an inaccessible mess, in contradiction of where Apple had originally targeted it to go. Even Nvidia turned their noses up at it.
Khronos denied the early shared development of what turned into Metal when Mantle was shown to be super promising, and then released Vulkan years later as a response that has had incredibly slow adoption due to the same over complexity that OpenCL died from.
I like that you specifically blame Apple though and ignore that Nvidia were one of the reasons that the Khronos partnership for both the things I mentioned didn’t work out. NVIDIA chose to not support OpenCL2. And they’re the ones who pushed hard on AZDO OpenGL when AMD and Apple were pushing for Mantle/Metal instead
Nvidia already had a proprietary compute architecture, they were the only business in the position that could say no. Even then, they never stopped third-parties from implementing OpenCL2 in software. They simply didn't implement it themselves. In any case, if your CUDA-killer relies on Nvidia's cooperation then your plan is hopeless from the start.
If Apple is capable of subsuming Khronos' place, now is the time to do it. If not, Nvidia's still in pole position and Apple doesn't have the hardware to overtake them anytime soon.
> when AMD and Apple were pushing for Mantle/Metal instead
You wanna explain the 999 IQ reason why AMD doesn't beg for Metal IP like they did in 2014? It's pretty cut-and-dried, I'm surprised to see you highlight it as an argument.
I would rather blame Intel and AMD for never delivering anything that could beat CUDA, and Google for completly ignoring OpenCL on mobile rather pushing Renderscript.
Yeah fair points. Both Intel and AMD tripped over each other multiple times inexplicably trying to chase CUDA. Which is sad because ATI was very early to GPU Compute.
Google flubbed the usual route of “someone’s passion project that will die when they’re no longer rewarded for maintaining it”
> and then released Vulkan years later as a response that has had incredibly slow adoption due to the same over complexity that OpenCL died from.
I agree with everything else you said, but as someone who has used both OpenCL and Vulkan, the complexity is not comparable in the slightest. Even for pure compute applications, Vulkan is radically more annoying to use than OpenCL, though of course both are much worse than CUDA (or even Metal). OpenCL is somewhat annoying, but usable if you're okay with a basic C API, whereas Vulkan feels like an insufferable waste of time.
Oh for sure. Sorry, I didn’t mean they were the same level of complexity as each other. Just that they’re significantly more complex than their respective alternatives.
I'm not even sure what the equivalent would be for CUDA tbh.