Limit to nvidia GPU containers?

So I understand that I can make containers that use my gpu by including the nvidia-runtime flag in the config file(as well as other options that need to be included), but i created a container and installed a minimal gui on it so that i can run unreal engine and microsoft Airsim on it. I created this container and added it to my guacamole server to have a clientless way of giving someone else access to this container so that they can develop something related to autonomous vehicles remotely. I am currently using an nvidia 2060 as the gpu. I have a really strong network which is more than able to handle multiple users being able to do this, as well as the server itself being overkill for the application. I am now interested in updating the gpu so that i can create multiple containers that do the same thing, and I am looking at either the nvidia A6000 , the A40 or even the A30 . I know nvidia is a nightmare when it comes to licensing , especially when it comes to their vGPU licensing. I have read through the documentation of vGPU for those cards and everything in the docs references A full VM over a citrix or vmware hypervisor and they have a limit to the number of graphic screens that can be used at once. Since I am using a container and not a VM , does this limit apply to me ?

Can i just make multiple containers with the same setup (Unreal,AirSim) and just pass my gpu to all of them and have lets say 7 people login through my guacamole client and access each container (1 person per container) and all be able to use the GPU simultaneously ?

I am only asking because i know that containers share resources and it would essentially just act like a process to the system and GPU (right?) ?

I forgot to mention, this is a headless server. And each container would have vnc installed in it


How do you manage to offload processing to the GPU for your VNC connections? Do you (i.e. guacamole) use VirtualGL?

When you use multiple containers with the same GPU, then the applications share the GPU. As if you are running two or more instances of a game on the same system.

Things would be more difficult if you wanted to share an NVidia GPU to multiple LXD VMs. Here you would need to use a vGPU functionality in NVidia, and NVidia provides that only to some high-end Tesla cards. But someone managed to figure out how to get this with consumer GPUs. I mention this about virtual machines to show that you are not affected by vGPU requirements.

I actually am using guacamole and vnc

Thank you for this information. I guess i have one last question. Is there any possibility to use a Radeon Pro with containers ? something similair to nvidia-runtime-container? i essentially want to create a few containers to share this gpu . I have tried looking but havent found much information for AMD Radeon GPU’s.

AMD GPUs don’t have the same restrictions than NVIDIA about lining up userspace and kernelspace. So there’s no need for something like nvidia.runtime, instead just passing them in with a gpu device and then using whatever tooling you normally do should work fine.

Thank you for this information, I really appreciate it !