Nvidia bans using translation layers for CUDA software to run on other chips
tomshardware.com
tomshardware.com
As an example, the license here has the exact phrase, on a file last changed 2 years ago: https://github.com/NVIDIA/spark-rapids-container/blob/dev/NO...
The EULA here, listed as last updated in 2021, also has this clause: https://docs.nvidia.com/cuda/eula/index.html
Google vs Oracle is about whether APIs are copyrightable and Google won.
> Nvidia has banned running CUDA-based software on other hardware platforms using translation layers in its licensing terms listed online, but those warnings previously weren't included in the documentation placed on a host system during the installation process. This language has now been added to newer versions of CUDA.
% diff EULA.txt-11.5 EULA.txt-11.6 |grep -2 trans
> 8. You may not reverse engineer, decompile or disassemble
> any portion of the output generated using SDK elements for
> the purpose of translating such output artifacts to target
> a non-NVIDIA platform.
That said, I believe 11.6 was released in January, 2022.Ah that's right, the Dec 2021 timestamp was for 'last modified', but 'created' is Jan 2022.
"Nvidia bans using translation layers for CUDA software to run on other chips — new restriction apparently targets some Chinese GPU makers and ZLUDA"
The time the clause was added also matters, because if it's ~3 years old and since then various translation layers backed by other large competitors have been released without any open lawsuit, it's a lot less concerning than if the clause were added right now, as, at least to me, it suggests that they're not talking about simply copying the API based on documentation and known quirks, but reverse engineering how the internals function for the purposes of a translation layer (eg same thing as MS banning reverse engineering of Windows for the purpose of adding the functionality to Wine, but tolerating clean room reimplementations).
So, it's essentially a clause flying in the face of antitrust law. NVidia wants to try it in court and pay more fines? Let's go. :)
It doesn't say you can't run CUDA code via a CUDA comabability layer - it says you can't reverse engineer CUDA code in order to translate it to something else (i.e. NOT CUDA) to run on non-NVIDIA hardware.
It's almost the exact opposite of what the article claims - the only way to legally run CUDA software on non-NVIDA hardware would in fact be to leave it as-is and run via a compatibility layer!!
A few months ago all the internet sites were abuzz with jensen’s “recent” comment that “nvidia is fully focused on ai now” and the article that is from makes it clear that it happened in the “mid 2010s”.
Gamersnexus actually had the citation on the screen with “by the mid 2010s” literally on screen, they still went with “recently” and refused to issue a correction or retraction (I asked).
https://youtu.be/VSSb-t76EpU?t=147
Similarly, the “nvidia sells directly to mining farms!” articles from a few years ago, were citing an article that was an estimate of mining sales based on the hash rate… it never accused anyone of selling anything to anyone, but tech media didn’t bother reading the source, and once the first article got rolling everyone just cited that instead.
https://twitter.com/dylan522p/status/1332502890104188929
Just like with apple “parts/defect stories” news sites know these are potent money-makers that drive a lot of clicks, and frankly I think there is a lot of open fanboyism and hostility among tech media today. GN didn’t “accidentally” refuse to do a correction, they want to push that narrative. Just like the “long-term value is mathematically impossible” etc - we have been in a world where reviewers are openly feuding with one of the vendors for over a half decade over the direction of product development and the death of Moores law in terms of pricing and performance increases.
Winning rhetorical points in that debate is more important to tech media nowadays than little things like journalistic integrity, or reading your sources.
https://www.youtube.com/watch?v=IlWT_TdOK6s
ran into this randomly, and just like the meltdown about how how "long-term value is mathematically impossible" this is another crazy video from one of the largest channels that literally exists just to snipe at NVIDIA over... something. Jump cuts back and forth etc.
it's just crazy to me that this seems to be the track GN is taking lately, they seem more interested in this stuff than factually-accurate reporting now...
c.f., https://emulation.gametechwiki.com/index.php/Licensing
It's a dirty trick IMO, but it has seen some mixed success.
edit: Never mind.
The bit about DMCA 1201 is mostly hypothetical. i.e. Nvidia's code signing looks like a DRM scheme if you squint. If Nvidia really wanted to, they could argue that, say, cracking the code signing is illegal no matter what you do with it. My gut feeling is that the courts probably wouldn't be too keen on Nvidia suing over this in the case of, say, someone writing their own power management firmware and using an exploit to load it onto a GPU. DMCA 1201 is supposed to prevent you from copying other people's work, not writing your own.
All of this is a moot point because Nvidia more recently released an "open source driver" that loads a single unified firmware blob. This has allowed building a new driver called NVK, which aside from having to load said blob is FOSS, and actually usable for Nvidia GPUs.
This way, emulators wouldn't be violating any license, just using technical details learned from third party sources. The anonymous project itself would be attacked by Nvidia, and in case this succeeded, replicas of the repo would probably pop up quickly and easily. But good luck having a chinese Gitee repo closed for american copyright infringement!
I believe, this 2 stage/project system was how DeCSS for DVDs worked? Someone cracked it and posted the code, which could them be picked up/used by others as it was 'public knowledge' or some such ??
What makes you think that?
Not sure where the weird China stuff came from. Are you saying that as long as the EU is even slightly better than China we should celebrate it?
No. I am saying, as long as the American market isn't enough for the growth necessities these giga corporations set themselves up to, they pretty much have no choice, but to go with the European market - since it's the second largest consumer market. And since the argument is about Nvidia being silly about IP stuff, the Chinese market - the third largest and therefore next best alternative to the European market - isn't exactly known to give a fuck about IP, at all, so good luck with that.
Also:
> EU has not yet reached...
> EU is even slightly better than China...
Jesus Christ. Throw your unread Atlas Shrugged copy into the cringe bin, and fucking touch some grass, for real.
I wonder legally if it would work to instead have licensing that charged a reasonable fee to run CUDA on non-NVIDIA hardware. Just don't enforce it for developers, but have it big enough and enforced enough so corporations would hesitate or pay... or just make it large enough to make it not make sense to run on non-NVIDIA cards.
... bad thing for whom? Especially having been in the unenviable position of needing to debug implementation errors in shader compilation, I'd argue that for the end user, it's much better if the software is not only usable for free, but open-source. To the extent that the ownership the hardware vendors place upon their software prevents this, I'd say that's a bad thing.
If NVIDIA can't compete on hardware they're just bailing water from a sinking ship. All their competition has to do is provide and adopt a just-as-good open software standard on cheaper hardware and people will flock to it, NVIDIA will be forced to provide compatibility or become an also-ran, and they'll lose anyway.
I'm all for open source, you should be able to run whatever you want on your NVIDIA card (and you can, no walled gardens there), but it doesn't go as far as insisting that if someone wrote software it should be free.
Funny you should say this just after Nintendo shut down Yuzu and collected hefty damages in the settlement.
Example: Where is Newtonsoft's Physics Library v1.x? It was awesome, easy, fast, and worked with my engine (or rather, my engine worked with it?). Gone. Nowhere to be found, not even on the internet archives way-back-machine.
It's rather trivial for a juggernaut like NVidia to wipe the earth of older cuda compilers by tweaking a driver and making cuda compilation cloud-based.
The text is "You may not reverse engineer, decompile or disassemble any portion of the output generated using Software elements for the purpose of translating such output artifacts to target a non-Nvidia platform".
That would appear to (attempt to -- it may not be enforceable) restrict the creation of translation layers. I don't understand how you could infer "bans using translation layers" from the above clause, and indeed the tweet they're referencing does not.
AIUI Zluda is something like Wine, in that it's an API reimplementation. It would be weird to call running Wine reverse engineering, decompilation or disassembling -- it's effectively just linking.
Wonder if it'll be seen that way legally though?
> In April 2021, the Supreme Court ruled in a 6–2 decision that Google's use of the Java APIs fell within the four factors of fair use, bypassing the question on the copyrightability of the APIs. The decision reversed the Federal Circuit ruling and remanded the case for further review.
[0] https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America%2....
So is it final, or they can still drag it on?
From wikipedia:
"Justice Stephen Breyer wrote the majority opinion. Breyer's opinion began with the assumption that the APIs may be copyrightable, and thus proceeded with a review of the four factors that contributed to fair use:"
That doesn't look so good.
"began with the assumption that the APIs may be copyrightable, and thus proceeded with a review of the four factors that contributed to fair use"
is that they're not saying APIs are copyrightable and basically ignored that question because they ruled that even if they are copyrightable googles use would be fair use and oracle doesn't have a case.
it's a fairly common method cases are resolved, you say "assuming the plaintiff claims are all true, do they actually have cause of action for a lawsuit?"
Could have been worse i guess.
So it's not great, as it does leave the Federal Circuit finding that the APIs were copyrightable standing so far, but as you say it could have been worse - it does not have remotely the same weight.
* https://arstechnica.com/tech-policy/2021/04/how-the-supreme-...
* https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_....
Now the vast majority of the compute cycles have centered around a handful of model architectures, implementing those specific architectures in whatever bespoke hardware isn't difficult.
Target specific applications not the whole complex library/language layer.
Somebody has to build those optimized backends -- it's not just a matter of people picking the wrong stack.
https://github.com/vosen/ZLUDA
With Triton looking to eclipse CUDA entirely, im not sure this prohibition does anything more than placate casual shareholders.
I wonder if that’s the wrong abstraction layer? There exists stuff like CUBLAS, which is of course using CUDA under the hood, but it also is something like a BLAS. Maybe as the AI/ML world keeps developing people will be grow more stubborn about sticking to frameworks. We probably just need a couple rounds of people getting burned by vendor lock-in, I guess.
It has a way to go before its compute model is as powerful and easy to use as CUDA is though.
To answer my own question: opencl, and it's just as bad as it was in 2014. Or, slowly, people are starting to do compute with Vulkan. This might be the best way forwards even if it's an awkward choice.
The only ones getting burned are the third-party guys who want adoption.
People who keep picking Nvidia don't want to learn not to use proprietary tools.
Maybe some comparison to company stores could be warranted…
These are actually pretty low level languages. The GPU has layers of memory caching. The primary challenge of SIMD programming (single instruction multiple data) is breaking up a problem (divide and conquer) in the most memory efficient way. Because "memory efficient" is highly dependent on the architecture of the card, you probably are writing code targeting a narrow band of GPUs. Sometimes you are adding code that optimizes for a specific card.
How challenging is it to rewrite CUDA into an alternative? One, it requires an algorithmic understanding down to memory management. Two, it requires rewriting the entire algorithm. Three, it requires optimizing the algorithm for each card you are targeting.
Finally, because Nvidia GPUs are the best, most people just code in CUDA because CUDA is better than the alternatives. It's just a good developer experience. This creates a cycle where Nvidia sells more GPUs for ML, so they can put more R&D into GPUs for ML.
Does this actually have any legal weight besides being conveyed by a multi-trillion dollar company?
Is Yuzu liable for piracy because they create an emulator and create guides on how to get licensed games working on it? Who knows. Could Nintendo throw lawyers at them endlessly until they submit, or even set a terrible precedent if Yuzu lost? Definitely. Which is why Yuzu just settled it, which in effect lets Nintendo win through their dubious claims.
> You may not reverse engineer, decompile or disassemble any portion of the output generated using SDK elements for the purpose of translating such output artifacts to target a non-NVIDIA platform.
Okay, so what if m purpose is just to explain to the world how it works? Maybe I'm just interested in the precise semantics of CUDA and all its possibly undocumented edge cases? Maybe what people do with this knowledge is none of my business? Maybe if I write a Vulkan translation layer I only do this so I can run it on NVDIA hardware?
And maybe, just maybe, their clause is an overreach and unenforceable? Though at this point I'd rater seek legal advice from a registered attorney.
html even has an <acryonym> element
would be fab if people would communicate effectively when they are writing on the web, as a job.
But ROCm has a DIFFERENT trick. It has it's own language that can be translated into CUDA or for other targets. If you use THAT language instead of CUDA you can get the effect of CUDA on Nvidia without the source being IN CUDA and you compile that language for AMD or INTEL.
Where I think WebGPU has the most promising role to play is in inference of smaller optimized AI models, in client hardware. Users expect software to run anywhere, and for developers being able to deploy a portable binary that "just works" is huge. Not to mention the immense cost savings... now you won't get a massive model, we're going to need the cloud for those for a while yet. But if you can run it locally, why not? And end users spend most of their time in browser these days, so it's obvious to see where this is all headed.
Huh? That was released like 3 years ago.