当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何将物理 GPU 分配(直通)到 Hyper-V 虚拟机

作者:精品下载站 日期:2024-12-14 01:52:07 浏览:17 分类:玩电脑

如何将物理 GPU 分配(直通)到 Hyper-V 虚拟机


RemoteFX vGPU 功能可在以前版本的 Hyper-V(从 Windows 7/Windows Server 2008 R2 开始)中使用,将主机独立 GPU 显卡传递到虚拟机。但是,从 Windows 10 1809 和 Windows Server 2019 开始,对 RemoteFX 的支持已被删除。相反,提出了新的离散设备分配(DDA)功能。

离散设备分配允许物理主机 PCI/PCIe 设备(包括 GPU 和 NVMe)从主机传递到 Hyper-V 虚拟机。在 Hyper-V 中使用 DDA 的基本要求:

  • 仅适用于 Hyper-V Gen 2 虚拟机;

  • VM 必须禁用动态内存和检查点;

  • 物理显卡必须支持GPU Partitioning;

  • 如果主机上启用了WSL(Windows Subsystem for Linux),则使用GPU-P通过显卡时,虚拟机中可能会出现代码43视频错误;

  • 尽管 SR-IOV(单根输入/输出虚拟化)未在 DDA 要求中列出,但如果不支持,GPU 直通虚拟机将无法正常工作。

离散设备分配仅适用于具有 Hyper-V 角色的 Windows Server。在桌面Windows 10和11中,您可以使用GPU分区与虚拟机共享显卡。本文介绍如何将物理 GPU 分配给 Hyper-V 上的虚拟机。

VMware PCI Passthrough (VMDirectPath) 是此功能的 VMware 等效项。

在 Windows Server 上启用 GPU 直通到 Hyper-V 虚拟机

离散设备分配 (DDA) 允许 PCIe 设备传递到 Windows Server 2016 及更高版本上的虚拟机。

在将 GPU 分配给 VM 之前,您必须更改其配置。

禁用虚拟机的 Hyper-V 自动快照(在管理 Hyper-V 上的虚拟机启动和启动顺序一文中进行了描述):

Set-VM -Name munGPUVM1 -AutomaticStopAction TurnOff

配置 32 位 MMIO 空间的缓存和内存限制:

Set-VM -Name munGPUVM1 -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 3Gb -HighMemoryMappedIoSpace 33280Mb

接下来,找出Hyper-V主机上显卡的PCIe设备的物理路径。为此,请在设备管理器中打开 GPU 属性,转到详细信息选项卡,然后找到位置路径属性。复制以 PCIROOT 开头的值。

[玩转系统] 如何将物理 GPU 分配(直通)到 Hyper-V 虚拟机

或者使用 PowerShell 获取此路径值:

Get-PnpDevice | Where-Object {$_.Present -eq $true} | Where-Object {$_.Class -eq "Display"}|select Name,InstanceId

在设备管理器中或使用 PowerShell 在 Hyper-V 服务器上禁用此显卡:

Dismount-VmHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)" -force

现在将物理主机 GPU 适配器连接到虚拟机:

Add-VMAssignableDevice -VMName VMName -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)"

然后打开虚拟机电源并检查您的 GPU 以及 Microsoft Hyper-V 视频设备是否出现在设备管理器的显示适配器部分中。

[玩转系统] 如何将物理 GPU 分配(直通)到 Hyper-V 虚拟机

VM 必须预装显卡驱动程序。

断开 GPU 与 VM 的连接并将其连接到主机:

Remove-VMAssignableDevice -VMName munGPUVM1 -LocationPath $locationPath
Mount-VMHostAssignableDevice -LocationPath $locationPath

在 Windows 10 或 11 上与 Hyper-V 虚拟机共享物理 GPU

GPU 分区 (GPU-P) 可在运行 Windows 10/11 build 1903 或更高版本的 Hyper-V 虚拟机中使用。

使用 Get-VMPartitionableGpu (Windows 10) 或 Get-VMHostPartitionableGpu (Windows 11) 命令检查您的显卡是否支持 GPU 分区模式。

[玩转系统] 如何将物理 GPU 分配(直通)到 Hyper-V 虚拟机

使用 Add-VMGpuPartitionAdapter cmdlet 通过视频适配器从主机传递到 VM。使用 Easy-GPU-PV 脚本 (https://github.com/jamesstringerparsec/Easy-GPU-PV) 将显卡驱动程序从 Hyper-V 主机复制到虚拟机。

下载包含脚本的 ZIP 存档并将其解压到 Hyper-V 主机上的文件夹中。

[玩转系统] 如何将物理 GPU 分配(直通)到 Hyper-V 虚拟机

打开提升的 PowerShell 控制台,然后允许在当前会话中运行 PowerShell 脚本。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force

运行脚本:

.\Update-VMGpuPartitionDriver.ps1 -VMName myVM1 -GPUName "AUTO"

该脚本将 GPU 驱动程序从主机复制到虚拟机。

[玩转系统] 如何将物理 GPU 分配(直通)到 Hyper-V 虚拟机

现在更改 VM 设置并为其分配 GPU:

Set-VM -VMName myVM1-GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1Gb -HighMemoryMappedIoSpace 32Gb
Add-VMGpuPartitionAdapter -VMName myVM1 

如果您已更新 Hyper-V 主机上的视频驱动程序,则还必须在虚拟机上更新它们。

.\Update-VMGpuPartitionDriver.ps1 -VMName myVM1 -GPUName "AUTO"

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯