Hyper-V的vGPU方案有RemoteFX(已弃用), DDA直通和GPU-P. 但是直通太浪费资源, GPU分区不仅打驱动麻烦性能还不稳定. 正好最近搞到了Ampere架构的Tesla卡(A10G), 试一下nvidia官方的Hyper-V vGPU方案. nv的方案也是基于GPU分区的, 但是有专门的host驱动来管理资源分配, 缺点是host和GPU必须支持SR-IOV, 所以只有Ampere架构及以上的卡可以用. 具体对SR-IOV的支持可以参考此链接

1.从nvidia许可门户下载基于Azure Stack HCI的vGPU host驱动. Hyper-V主机系统可以为Azure Stack HCI 22H2或者Windows Server 2022. 由于官方驱动只有对A40, A16, A10和A2的支持, 所以放一个我改好的驱动, 添加了所有Ampere和Ada Lovelace架构的可用GPU的支持(驱动未签名). 为方便截图, 我使用Windows Server 2022作为Hyper-V主机

2.打开命令提示符, 切换至驱动文件所在目录下, 使用以下命令安装host驱动:

pnputil /add-driver nvgridswhci.inf /subdirs /install /reboot

成功安装后可使用 nvidia-smi vgpu -s 命令查看支持的vGPU实例, 默认为vDWS
若此命令没有返回值, 请使用 nvidia-smi -q | findstr "Fractional VGPU" 命令, 确保GPU支持SR-IOV和分割多个vGPU
若要更改实例类型, 请修改 HKLM:\SYSTEM\ControlSet001\Control\Class\KEY\GridGpupProfileType 处的注册表值, 1=vDWS, 2=vApps, 3=vPC, 4=vGaming. 其中 KEY 为以下Powershell命令的返回值:

Get-PnpDeviceProperty -InstanceId "instance-id" | where {$_.KeyName -eq "DEVPKEY_Device_Driver"} | Select-Object -Property Data

1.png

2.png

3.使用Powershell命令 Get-VMHostPartitionableGpu 获取可创建分区的GPU. 指定分区数量后该指令显示对应的vGPU实例规格

3.png

4.使用以下Powershell命令向虚拟机添加vGPU实例, 并设置MMIO大小. 其中所有数值均为对应实例规格的数值

Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 64Gb -VMName $vm
Add-VMGpuPartitionAdapter –VMName $vm `
–MinPartitionVRAM min-ram `
-MaxPartitionVRAM max-ram `
-OptimalPartitionVRAM opt-ram `
-MinPartitionEncode min-enc `
-MaxPartitionEncode max-enc `
-OptimalPartitionEncode opt-enc `
-MinPartitionDecode min-dec `
-MaxPartitionDecode max-dec `
-OptimalPartitionDecode opt-dec `
-MinPartitionCompute min-compute `
-MaxPartitionCompute max-compute `
-OptimalPartitionCompute opt-compute

4.png

5.启动虚拟机后正常安装grid驱动并获取许可, 即可正常使用vGPU. 若启动虚拟机时报错没有与当前设置的组策略兼容的GPU设备, 则需向注册表 HKLM:\SOFTWARE\Policies\Microsoft\Windows\HyperV 处添加名为 RequireSupportedDeviceAssignmentRequireSecureDeviceAssignment 的DWORD项, 值均为0

5.png

仅有一条评论

  1. 马大大

    您好,所以放一个我改好的驱动 这个下载链接失效了吗?我下载的时候提示401

添加新评论