Is there a way to emulate GPUs in a VM without doing an actual GPU-passthrough?

Now now, before y'all close this question saying "GPU emulation is not possible, it won't increase performance", let me explain:

So I have a system which will run multiple (like around 20 or so) virtual machines (yeah, its more like a server. No, this question does not belong to Server Fault).
Each of those machines will have a desktop environment in them (probably running windows, but I haven't decided that yet) and will be used as a normal desktop by an average Joe (watching movies, Office software, etc) by remotely logging in.

The only problem I'm facing in this is, if I have so many virtual machines each requiring basic graphics requirements, how will I allocate the GPUs accordingly? I definitely cannot afford to have a separate GPU for each VM and do a GPU pass-through for each VM.

Clearly I'm missing something here. I'd like to know if there is a way to maybe have one big powerful GPU installed and accordingly split it up by perhaps emulating a GPU in each VM, and then give the graphics work to the host GPU. Is there anyway to do this?

P.S, I'm a noob to GPU emulation, please explain elaborately

  • What part of the GPUs capability are you trying to access in the VM? In VMware, at least, this is essentially a check-box when you have the correct hardware, and it can simply assign based on need or based on your own assignment settings and rules. Dec 23, 2016 at 1:06
  • @music2myear Well I'm using QEMU-kvm to minimise any memory overhead (and also I saw a couple of articles mentioning it gives better performance). So yeah. I still want to emulate a GPU to control the amount of memory and CUDA cores that I allocate to each VM if that's possible? Dec 23, 2016 at 13:35


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.