GPU virtualization is now available on client NVIDIA graphics cards.
A group of enthusiasts have found a way to enable GPU virtualization for GeForce cards
A feature to artificially segment graphics card resources into multiple virtual instances is currently limited to Grid/Tesla and workstation Quadro GPUs. This functionality is not available to the gaming GeForce series. At least it wasn’t until now. Thanks to a rather simple mod called “vgpu_unlock”, this feature has now been enabled on consumer GPUs.
GPU virtualization is a way of distributing graphics card hardware resources virtually to a number of instances. This allows multiple end-users to use the graphics card for a variety of tasks, such as 3D modelling or scientific work. However, most users should be familiar with this technology thanks to GeForce NOW platform, where NVIDIA themselves use GRID GPUs to virtualize multiple environments for gamers.
Theoretically, it should now be possible to enable a single GeForce RTX 3090 graphics card to power multiple virtual machines and use that for gaming. It would have been an interesting solution to the GPU shortage. Although it has not been tested, Internet Cafes could use a single GPU to power multiple machines.
The mod is actually quite simple, it tricks the driver into reading a different PCI device ID. Pascal, Turing, and Ampere cards are being treated as Quadro or Tesla cards. It works on Linux and KVM virtual machine software. While the host machine cannot be Microsoft Windows-based, the virtual machines that will be attached to the main system can.
In order to determine if a certain GPU supports the vGPU functionality the driver looks at the PCI device ID. This identifier together with the PCI vendor ID is unique for each type of PCI device. In order to enable vGPU support we need to tell the driver that the PCI device ID of the installed GPU is one of the device IDs used by a vGPU capable GPU.
The list of all currently supported graphics cards has been published in one of the files: