GPU virtualization or vGPU enables GPU resources to be shared by multiple VMs or remote machines and is traditionally restricted to certain datacenter and high-end Quadro cards. Now, a relatively simple mod has appeared on GitHub that enables vGPU functionality even on consumer NVIDIA GPUs on a Linux host as long as they are based on the same physical GPU as a vGPU-compatible Tesla card.
A team of enthusiasts have managed to enable GPU virtualization in consumer NVIDIA cards using a simple mod to trick the driver. This mod allows owners of several consumer NVIDIA cards to share a single GPU with several physical or virtual machines, which is otherwise only possible in datacenter variants of these cards such as the Tesla lineup and a few Quadro ones. Currently, NVIDIA only allows one GPU to be used via GPU passthrough mode.
Similar to CPU virtualization, GPU virtualization, or vGPU, enables distributing GPU resources to individual virtual machines enabling them to run compute and 3D workloads similar to a native setup. A modern high-end consumer graphics card is often sufficiently powerful that its resources can be shared between several machines depending on the workload. Though the hardware may be theoretically capable of vGPU, card manufacturers such as AMD and NVIDIA artificially limit this functionality via software in order to segregate their consumer and workstation/datacenter offerings.
The current mod, called vgpu_unlock, allows circumventing this limitation by tricking the driver into seeing a consumer NVIDIA GPU as a Tesla variant. As prerequisites, this mod requires the NVIDIA GRID vGPU driver, Dynamic Kernel Module System (dkms) package, and Python 3 installed on a Linux host. Note that due to licensing issues, this mod will almost never make it to consumer Windows builds or VMware ESXi. However it should be possible to use Windows 10 virtual machines on Linux with full GPU features.
Currently, vgpu_unlock supports several consumer NVIDIA GPUs including several GP102, GP104, TU102, TU104, and GA102 cards as long as the consumer or Quadro card is basically the same physical chip as a vGPU-compatible Tesla GPU. It should also be possible to further customize the mod if the corresponding PCIe device ID of the GPU is known.
All said, the vgpu_unlock mod does not fully replace purchasing an NVIDIA-recommended vGPU solution. Those solutions are validated by ISVs and are actually intended for professional applications. The only instances where we find vGPU or SR-IOV running officially on consumer cards are online gaming platforms such as GeForce Now and Google Stadia, wherein a single card often services several connected players.
However, this mod does open up the possibility for Linux users to fully maximize the potential of their consumer GPU hardware. For instance, a Linux system can be made to host multiple Windows (and even Mac) virtual machines at once for content creation, gaming, etc. It may also be possible to offer remote desktop services with full GPU functionality, but how well such a service would work with this mod remains to be seen.