GPU passthrough in Hyper-V works through two distinct methods: Discrete Device Assignment (DDA) for full GPU exclusivity and GPU Partitioning (GPU-P) for sharing resources across VMs.
Passthrough a physical graphics card to a Hyper-V virtual machine used to be a server-only trick, but modern Windows 10 and 11 hosts now support it with consumer GPUs. Which method you use hinges on one thing: whether you need the entire GPU dedicated to one VM or you want to share it. This guide covers both DDA and GPU-P step by step, including the traps that trip up even experienced admins.
Which Hyper-V GPU Passthrough Method Should You Use?
Your hardware and use case decide the method. DDA hands the whole GPU to a single VM so it sees the card as a native device — essential for CUDA workloads, gaming, or any task requiring full raw performance. GPU-P splits the GPU’s resources among multiple VMs, letting each one accelerate graphics without monopolising the card. DDA is the only option for most NVIDIA GeForce and AMD Radeon consumer cards; GPU-P works best with enterprise-grade GPUs like NVIDIA GRID or with modern Windows 11 hosts that support the newer partitioning API.
| Feature | Discrete Device Assignment (DDA) | GPU Partitioning (GPU-P) |
|---|---|---|
| GPU exclusivity | Full – one VM gets the entire card | Shared – multiple VMs use the same GPU |
| Host can still use GPU | No (GPU disabled on host) | Yes |
| Performance | Near-native, full raw power | Some overhead, lower than DDA |
| Supported consumer GPUs | NVIDIA GeForce TITAN, RTX 3080 Ti, 4090; AMD Radeon RX | Only enterprise cards (NVIDIA GRID, AMD MxGPU) or certain Windows 11 hosts with GPU-P |
| Supported host OS | Windows 10 21H2+, Windows 11, Windows Server 2022 (poor DDA support) | Windows 10 21H2+, Windows 11, Windows Server 2022 (recommended) |
| Setup complexity | Moderate – requires dismounting GPU, managing device paths | More steps – driver scripts, memory configuration |
| VM checkpoint requirement | Must remove all checkpoints before configuring | Must remove all checkpoints before configuring |
How To Enable GPU Passthrough With DDA
DDA gives a single VM exclusive control over a physical GPU. This is the path for any consumer NVIDIA or AMD card that must appear inside a VM as if it were a native device. The following steps assume you have already enabled Intel VT-d or AMD-V and IOMMU in your UEFI / BIOS, and that your motherboard supports SR-IOV (optional but recommended).
- Check GPU partitioning capability. Open PowerShell as Administrator and run
Get-VMHostPartitionableGpu(Windows 11) orGet-VMPartitionableGpu(Windows 10). If the command returns your GPU, the host supports DDA. - Disable the GPU on the host. Open Device Manager, expand Display adapters, right‑click your GPU, and select Disable device.
- Find the device location path. In Device Manager, right‑click the GPU again, select Properties > Details, and choose Device path from the dropdown. Copy the full path (e.g.,
PCIROOT(0)#PCI(0300)#PCI(0000)). - Dismount the GPU from the host. In PowerShell (Admin), run
Dismount-VmHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)" -Force, substituting your own path. - Assign the GPU to the VM. Run
Add-VMAssignableDevice -VMName "YourVMName" -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)". - Install drivers inside the VM. Start the VM, open Device Manager, verify the GPU appears (often under “Other devices”), and install the latest NVIDIA or AMD drivers from the manufacturer’s website.
Note: DDA requires you to delete all VM checkpoints / snapshots before you begin. The host will not see the GPU while it is assigned to a VM.
How To Enable GPU Passthrough With GPU Partitioning (GPU-P)
GPU-P lets multiple VMs share the host’s GPU, ideal for desktop virtualisation and light graphics acceleration. This method is the recommended approach on Windows 11 and Windows Server 2022, especially when you cannot reserve an entire card for one VM. The script-based workflow below relies on the community-maintained Easy-GPU-PV project. Be sure to run every PowerShell command as Administrator.
- Enable UEFI features. Verify Intel VT‑d / AMD‑V and IOMMU are enabled in the UEFI / BIOS. SR‑IOV should also be enabled if your motherboard supports it.
- Remove all VM checkpoints. Delete any snapshots on the target VM – they block GPU‑P configuration.
- Set PowerShell execution policy. Run
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force, thenSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser. - Copy host drivers to the VM. Download the
Update-VMGpuPartitionDriver.ps1script from the Easy‑GPU‑PV repository. Run.\Update-VMGpuPartitionDriver.ps1 -VMName "YourVMName" -GPUName "AUTO". This copies the GPU driver files from the host into the VM’s driver store. - Configure VM memory. Run the following three PowerShell commands:
Set-VM -VMName "VMName" -GuestControlledCacheTypes $true
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName "VMName"
Set-VM -HighMemoryMappedIoSpace 32Gb -VMName "VMName" - Add the GPU partition adapter. Run
Add-VMGpuPartitionAdapter -VMName "YourVMName". - Disable the hypervisor check inside the VM. This step is critical for NVIDIA consumer GPUs. Mount the Enterprise Windows Driver Kit (WDK) ISO inside the VM, launch
E:\LaunchBuildEnv.cmd, and use the provided script to disable the hypervisor check for GPU drivers. Without this, drivers will fail to load.
Common Mistakes and How To Avoid Them
- Using DDA on Windows Server 2022 with a consumer GPU. Microsoft’s own support forums confirm that DDA support on Server 2022 is “very poor” – the GPU often becomes inaccessible to both the host and the VM. Use GPU‑P instead on Server 2022.
- Forgetting to remove VM checkpoints. Both DDA and GPU‑P will silently fail if any checkpoint exists. Delete them before starting.
- Using the wrong location path. The
Dismount-VmHostAssignableDevicecommand requires the exact Device Path from Device Manager, not the generic PCI string. Copy the full path from the Details tab. - Setting memory values incorrectly. A
LowMemoryMappedIoSpaceof 0 or aHighMemoryMappedIoSpacethat is too large (above 32 GB) can cause the VM to fail to boot. Stick with 1 GB and 32 GB respectively. - Attempting GPU passthrough on a laptop. Most laptop GPUs are integrated or lack the IOMMU / SR‑IOV support required for either method. Desktop‑class hardware is necessary.
- Forgetting to disable the hypervisor check inside the VM. Without this, NVIDIA consumer drivers will not install, even if the GPU appears in Device Manager.
For a deeper dive into error messages and recovery steps, consult the official Microsoft troubleshooting guide for Hyper‑V GPU assignment issues.
Checklist: Ready Your Hardware And Avoid Surprises
| Requirement | DDA | GPU‑P |
|---|---|---|
| Intel VT‑d / AMD‑V enabled | ✅ Yes | ✅ Yes |
| IOMMU enabled in BIOS | ✅ Yes (mandatory) | ✅ Yes (mandatory) |
| SR‑IOV enabled in BIOS | ✅ Recommended | ✅ Required |
| Desktop / workstation motherboard | ✅ Required | ✅ Required |
| Latest GPU drivers on host | ✅ Required | ✅ Required |
| VM checkpoints removed | ✅ Required | ✅ Required |
| GPU licensing (enterprise cards) | ❌ Not needed | ✅ vGPU license per VM |
References & Sources
- Microsoft Learn. “Troubleshoot Hyper‑V GPU assignment, partitioning, and passthrough issues.” Official guide for diagnosing common problems.
- NVIDIA vGPU Documentation. “NVIDIA vGPU Deployment Guide.” Required reading for enterprise‑card licensing and setup.
- Easy‑GPU‑PV Project. GitHub repository. Host driver‑copy script for GPU‑P.
