But why would NVIDIA do that when they can just sell you an A100 for ten times the price of a 4090?
https://github.com/vosen/ZLUDA
That's a binary level wrapper. Of course there's also ROCm HIP at the source level, and many other things, such as SYCL