Contents

Hyper-V 虚拟机显卡直通 VGPU 配置指北

如何在 Hyper-V 虚拟机中配置虚拟 GPU(VGPU)直通,使用 NVIDIA 显卡实现 GPU 加速。以下是详细的配置步骤和注意事项,基于 NVIDIA GeForce GTX 1650(GPU: TU117)测试环境。

前提条件

  1. 硬件要求

    • 显卡:NVIDIA 显卡,支持 NVENC 功能。本文以 NVIDIA GeForce GTX 1650(GPU: TU117)为例。
    • 驱动:显卡驱动的 WDDM 版本需大于 2.4。测试环境中使用 WDDM 2.7(可通过 dxdiag 的“显示”页面查看)。
  2. 系统要求

    • 主机运行 Windows 10/11 专业版或企业版,支持 Hyper-V。
    • 提前安装好win10或win11虚拟机且处于关闭状态以进行配置。
  3. 工具准备

    • PowerShell(建议以管理员权限运行)。
    • NVIDIA 显卡驱动已正确安装在宿主机上。

https://statics.lshell.com//images/image-20250604115726434.png

配置步骤

1. 配置 Hyper-V 虚拟机 VGPU

以下 PowerShell 脚本用于为虚拟机启用 VGPU,并限制其最多使用主机 GPU 资源的 70%。请根据实际虚拟机名称修改 $vm 变量。

# 定义虚拟机名称,需要改成你自己的
$vm = "win10"

# 设置虚拟机的自动停止操作为关闭(TurnOff)
Set-VM -Name $vm -AutomaticStopAction TurnOff

# 移除现有的 GPU 分区适配器(若存在),确保从干净状态开始
Get-VMGpuPartitionAdapter -VMName $vm | Remove-VMGpuPartitionAdapter

# 添加新的 GPU 分区适配器
Add-VMGpuPartitionAdapter -VMName $vm

# 启用 GuestControlledCacheTypes,优化性能
Set-VM -GuestControlledCacheTypes $true -VMName $vm

# 设置低内存映射 I/O 空间为 1GB
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm

# 设置高内存映射 I/O 空间为 32GB
Set-VM -HighMemoryMappedIoSpace 32Gb -VMName $vm

# 可选
# 设置 GPU 资源分配:显存(VRAM)、编码(Encode)、解码(Decode)、计算(Compute)
# 最小 1%,最大 70%,最佳 50%
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 1 -MaxPartitionVRAM 70 -OptimalPartitionVRAM 50
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionEncode 1 -MaxPartitionEncode 70 -OptimalPartitionEncode 50
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionDecode 1 -MaxPartitionDecode 70 -OptimalPartitionDecode 50
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionCompute 1 -MaxPartitionCompute 70 -OptimalPartitionCompute 50

2. 验证 VGPU配置

  1. 第一步的脚本运行后,启动虚拟机。

  2. 打开虚拟机的“设备管理器”,检查“显示适配器”下是否显示 NVIDIA GeForce GTX 1650(或其他对应显卡型号)。若黄色感叹号,则 VGPU 配置成功。

    https://statics.lshell.com//images/image-20250604114707633.png

3. 配置显卡驱动

目前虚拟机的 GPU 还处于不可用状态,需要在虚拟机中安装与主机匹配的 NVIDIA 驱动文件。

  1. 宿主机驱动文件路径

    • 主机上的 NVIDIA 驱动文件通常位于:

      C:\Windows\System32\DriverStore\FileRepository\
    • 查找以 nv 开头的文件夹,包含 NVIDIA 驱动相关文件。

  2. 虚拟机驱动文件路径

    • 在虚拟机的 C:\Windows\System32\ 下手动创建文件夹:

      C:\Windows\System32\HostDriverStore\FileRepository\
  3. 将第一步的 NV 开头文件夹复制到第二步创建的目录里

  4. 复制 NVIDIA API 文件

    • 将宿主机上的 nvapi64.dll 文件复制到虚拟机的相同路径:

      C:\Windows\System32\nvapi64.dll
  5. 重启虚拟机

  6. 在虚拟机设备管理器查看驱动状态,黄色叹号已经消失了就代表可用

https://statics.lshell.com//images/image-1723796000376.png

4. 调整虚拟机显示设置

  1. 禁用 Hyper-V 增强会话
    • 在 Hyper-V 管理器中,关闭虚拟机的“增强会话模式”(Enhanced Session Mode)。
  2. 设置分辨率
    • 在虚拟机内调整显示分辨率,确保与显卡性能匹配(例如 1920x1080 或更高,视需求而定)。

5. 推荐工具

一键配置工具(本人未验证,请自行验证)

  • HyperVGPUApp:https://github.com/PIKACHUIM/HyperVGPUApp

注意事项

  1. 任务管理器可能无法显示 VGPU 使用信息,但只要设备管理器中显卡正常识别即可使用。
  2. 资源分配
    • 本文设置 GPU 资源最大为 70%,可根据需求调整 MaxPartition* 参数(例如 50% 或 90%)。
    • 如果运行多个虚拟机,建议降低每个虚拟机的最大分配比例以避免资源竞争。
  3. 性能监控
    • 虚拟机任务管理器可能无法显示 GPU 使用率。
  4. 内存映射
    • HighMemoryMappedIoSpace 设置为 32GB 适用于高性能任务。如果主机内存有限,可降低到 16GB 或 8GB。