Arc-Compute / LibVF.IO

A vendor neutral GPU multiplexing tool driven by VFIO & YAML.
GNU Affero General Public License v3.0
822 stars 39 forks source link

Is vgpu_unlock used ? #58

Closed alkeryn closed 2 years ago

alkeryn commented 2 years ago

Hey i was curious if this tool relies on vgpu_unlock or is its own thing entirely ? if so how is it different internally ?

thank you very much for the clarifications !

arthurrasmusson commented 2 years ago

Hey @alkeryn. If you're an Nvidia device user during install we ask the user if they'd like to use the auto-merge script (https://github.com/Arc-Compute/LibVF.IO/blob/master/scripts/funcs-libvfio.sh#L507) however unlocking is not required as we don't need to inject unlocks in nvidia-vgpu daemons - rather if the user chooses to use GPU Virtual Machine (GVM) when prompted then we disable blob programs and use free/libre programs instead: https://github.com/Arc-Compute/LibVF.IO/blob/e283a0ced0187701cc400985cac6557aa3567e74/scripts/funcs-libvfio.sh#L573 https://docs.linux-gvm.org/gvm-user/d5/dc5/gvm-cli_8cpp.html https://docs.linux-gvm.org/gvm-user/d1/d21/gvm-mgr_8cpp.html

arthurrasmusson commented 2 years ago

I hope I've answered your question with enough thoroughness so I'm going to close the issue for now but if you have more questions about this I can open it back up again. :)

alkeryn commented 2 years ago

Hey ! thanks for the reply ! i have never heard of GVM before. we still need the nvidia-merged driver installed though right ?

Also, will cuda still work on the host ? what about the guest ?

thank you very much ! :)

arthurrasmusson commented 2 years ago

Hi @alkeryn sorry for taking awhile to reply to this - I'm outside of my usual timezone currently and dealing with a bit of jet lag haha.

The driver merge is useful for desktop computers and some laptops where the device should still output video on the host so you can see your VMs - in some cases that isn't necessary (for example in servers and embedded where there is no display connected) so the auto-merge is optional. Drivers like i915 Xe SR-IOV output video off the physical function/HDMI/DisplayPort out by default so it can be considered a 'merged driver' as it works with SR-IOV virtual functions for use-cases with and without host video output by default. You can read more about that here: https://openmdev.io/index.php/Merged_Drivers

As for CUDA on the host yes this works. CUDA in the guest requires that you run a para-virtual GRID guest driver with a valid license from Nvidia. You can read more about that here: https://www.nvidia.com/en-us/data-center/buy-grid/