Daz and iRay in a VM
Pickle Renderer
Posts: 236
Hi guys,
Is it possible to run Daz and do iRay renders in a VM on Windows 10 or 11? Do any of them support passing through all of the GPU caps? I did a google but wasn't able to find a definitive answer, also on performance consequences.
Thanks.
Comments
You can, but I don't know why you would want to do something like that since its going to be slow as... molasses, if I'm understanding you correctly.
No, I just want to run Daz in a VM, hardware passthrough is a thin layer if I remember correctly. I just wasn't sure if VMs do passthrough of all driver capabilities these days.
I'm on Linux, so I've done this a lot. VMWare Workstation, or whatever it's called, doesn't give you hardware passthrough, so no CUDA/Optix for Iray, nore OpenCL for sims. Only their enterprise level products do. I understand that VirtualBox does do PCI passthrough, but haven't tried it. Otherwise, the experience is a bit slower, but not nearly as bad as one might think once your CPU specific option is enabled under the VM menu. Totally usable.
Yeah, that's what I was thinking of since my idea for using VMs is to basically run stuff that otherwise wouldn't work on the installed OS. How expensive are the enterprise products?
I'm sorry, I can't remember the exact figure, but I do remember not being able to discern which version of vSphere did in fact do PCI passthrough, and later thinking not "No", but "Hell, no... I'd rather have an RTX A6000".
But give VirtualBox a try. For the things for which I did try it, it was just as capable as VMWare, just with fewer bells and whistles that I didn't need anyway. It just might work for you.
double posted
There was no double post?
Just FYI, I don't think it's possible in Windows (at least with Hyper-V), without Windows Server (2016 or later) which allows something called Discrete Device Assignment. The previous technique called RemoteFX has been removed, it appears with extreme prejudice, due to security issues.
There's another technique called GPU Partitioning that I tried with Windows 11. It kind-of works with Hyper-V, Daz and Windows 11 but it has issues which I think are almost certainly OpenGL problems. For example, wafting the mouse around causes flicker/partial redrawing in the main view. It does render though (with iRay hardware). I can't speak to performance of Daz on this setup as I installed my VM to spinning rust, not the m.2.
I think that was the way to go:
https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF
I got a similar setup on ubuntu with libvirt,qemu,kvm,Looking Glass and virt-manager. The setup is a bit not that simple because you have to assign the GPU to the VM and then use the right tools and setup, but once running it is stable and you have the 2nd GPU of the workstation completely for the virtal win10 machine. I use it with a RTX A4000 and the performance is decent. My main graphics card is an AMD RX 5700 XT. The only backside is, since it looks like you need 3 times the RAM available you gonna use on the GPU, I had to ramp up my PCs RAM to 128GB to give the virtual machine 64GB to be able to use the 16GB of the A4000.
Christian
Working on another project, not Daz related, I managed to get a VMWare VM with a passed-through NVDIA card on Windows 11. It was able to use NVEnc and NVDec (the ASICs for video encoding/decoding on NVIDIA cards). The trick is to disable use of discrete graphics in the bios, i.e. to make sure it's headless. This includes not plugging any monitor cable into it either. You can then pass it through as a PCIe device and install the NVIDIA drivers, giving you all card features including RTX-type things. I did it with 6.5.
Today I tried Hyper-V (yesterday I made a typo, I'd done it with VMWare), using Craft Computing's tutorial for GPU partitioning. I can see my 4080 in Device Manager and there's no code 43. It claims to be working. But Windows isn't using it. GPU-Z is kind-of empty too. Anyone know what mistake I've made here, if any? Or does this technique just no longer work? (the one where you copy the driver files from System32 on the host into the VM and do some Powershell foo).