Video virtualization via GPU pass-thru for mining cards
Posted: Mon Apr 06, 2020 2:25 pm
I have a series of topics which may call for someone to write one or more how-to wiki pages, should anyone here be a subject-matter expert on the topic.
From most general to most specific:
My thought is that for driver testing, it should be possible to use a second GPU - whether a pair of cards, or a card and an iGPU/APU - as the GPU of a virtual machine, as has been occasionally been discussed before. There are a large number of older cards on the used market, both standard cards and dedicated mining cards, any of which ought to be suitable for this use, though not necessarily ideal. However, AFAICT this would usually require the dev to have a second monitor for the virtualized system (or a KVM to multiplex a single monitor, or something similar). This could present issues with cost for a lot of people here, and would in many instances be less convenient as well. Thus, I wanted to see if pass-thru would be an option for running the video of a VM.
Also, while I haven't checked recently, the last time I looked the headless mining cards were considerably less expensive than the the regular ones, following the steep decline in mining operations about a year and a half ago. If this is still true, then a headless card could be a great way to test video drivers on the cheap, if the pass-thru was a feasible method.
Any thoughts?
For reference, my own system as of today is:
Ryzen 3 2200g APU
16 GiB 2400 DDR4
MSI B350M Pro-VDH motherboard
250GiB NVMe SSD (currently disabled for annoying reasons, I mean to take care of that soon)
1TiB WD Blue HDD
Corsair CX 650W 80+ Bronze Modular PSU
Manjaro Linux, Kernel 5.5.13-1
XFCE 4
While I do intend to upgrade relatively soon (I bought this system in late 2018 with the intent of doing so as money became available, which it so far hasn't, though I did replace the PSU that came with the case),
From most general to most specific:
- What is non-CPU hardware virtualization in general, and what methods exist for virtualizing various common devices in a way that would allow a developer to test their drivers.
- What methods exist for virtualizing GPUs using multiple graphics cards (or an iGPU and a graphics card) driving separate displays
- Is it possible to use windowed pass-through from a guest GPU to display on a primary display connected to a host GPU? (this video demonstrates that pass-through can be done when using a headless Nvida graphics card as the primary GPU passed through an iGPU, but I don't know if the output of a secondary GPU used by a VM can be passed through the main display via an iGPU as a sub-window of the main display.)
- For each of these approaches, how does setting this up for a Intel CPU with an iGPU differ from setting it up for an AMD APU, if at all?
- How do Nvidia GPUs differ from AMD GPUs when used virtualized? Are their any further differences when used via pass-through (if possible)?
- How would this be configured using Windows? Using Linux?
- Assuming that a given motherboard has only one PCIe x16 or x8 slot, would most such graphics cards actually work on a x4 or x1 slot (they are supposed to support it according to the PCIe standard, but...) and would the performance still be sufficient for driver testing purposes?
- Are the GPUs from one or two generations prior (for Nvidia cards, AMD with both dedicated cards and APUs, and Intel iGPUs) similar enough to current-gen card that a minimal driver for the older GPUs would still function with the newer ones, or at least be usable as a stepping stone to supporting them?
My thought is that for driver testing, it should be possible to use a second GPU - whether a pair of cards, or a card and an iGPU/APU - as the GPU of a virtual machine, as has been occasionally been discussed before. There are a large number of older cards on the used market, both standard cards and dedicated mining cards, any of which ought to be suitable for this use, though not necessarily ideal. However, AFAICT this would usually require the dev to have a second monitor for the virtualized system (or a KVM to multiplex a single monitor, or something similar). This could present issues with cost for a lot of people here, and would in many instances be less convenient as well. Thus, I wanted to see if pass-thru would be an option for running the video of a VM.
Also, while I haven't checked recently, the last time I looked the headless mining cards were considerably less expensive than the the regular ones, following the steep decline in mining operations about a year and a half ago. If this is still true, then a headless card could be a great way to test video drivers on the cheap, if the pass-thru was a feasible method.
Any thoughts?
For reference, my own system as of today is:
Ryzen 3 2200g APU
16 GiB 2400 DDR4
MSI B350M Pro-VDH motherboard
250GiB NVMe SSD (currently disabled for annoying reasons, I mean to take care of that soon)
1TiB WD Blue HDD
Corsair CX 650W 80+ Bronze Modular PSU
Manjaro Linux, Kernel 5.5.13-1
XFCE 4
While I do intend to upgrade relatively soon (I bought this system in late 2018 with the intent of doing so as money became available, which it so far hasn't, though I did replace the PSU that came with the case),