Does Nvidia vGPU provides spatial sharing of GPU?

Hello Nvidia Experts,

I have a question about whether the Nvidia vGPU provides spatial GPU sharing.
When reading the vGPU documentation, I can see that Nvidia driver enforces memory isolation for each vGPUs, but is isolation also applied for SMs (streaming multiprocessor)? For example, if vGPU-A uses a kernel that consumes all the available thread blocks of the GPU then vGPU-B have to wait for the vGPU-A to finish?

Hi

The Framebuffer is dedicated to each VM, but everything else is shared. To help give the best experience / performance there are a few Schedulers that you can select from or modify depending on your use case. You can read about how these work and how to modify them here: https://docs.nvidia.com/grid/latest/grid-vgpu-user-guide/index.html#changing-vgpu-scheduling-policy

Regards

MG

Thanks for the reply,
But my question is does the Nvidia vGPU share the same limitations as the normal scenario?
For example, a kernel cannot preempt the other Kernel that occupies all of the GPU resources.

Hi

If you’re asking whether a single VM can consume the entire GPU so that other VMs are negatively impacted when they try and access it, then the answer is yes. A GPU is no different to any other virtualised resource.

To prevent this from happening as much as possible, the Scheduler can be configured to allocate different amounts of the GPUs resources between multiple VMs in different ways, as per the link above.

Regards

MG