在Hyper-V中配置vGPU
Hyper-V的vGPU方案有RemoteFX(已弃用), DDA直通和GPU-PV. 但是直通太浪费资源, 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的支持(驱动使用自签名证书)(驱动添加了vCS支持并阉割了vGaming支持, 我故意的). 为方便截图, 我使用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
处的注册表值, 0=vCS, 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
3.使用Powershell命令 Get-VMHostPartitionableGpu
获取可创建分区的GPU. 指定分区数量后该指令显示对应的vGPU实例规格
4.使用以下Powershell命令向虚拟机添加vGPU实例, 并设置MMIO大小. 其中所有数值均为对应实例规格的数值
Set-VM -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 2Gb -HighMemoryMappedIoSpace 128Gb -VMName $vm
Add-VMGpuPartitionAdapter –VMName $vm -InstancePath $path
或
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
5.启动虚拟机后正常安装grid驱动并获取许可, 即可正常使用vGPU. 若启动虚拟机时报错没有与当前设置的组策略兼容的GPU设备
, 则需向注册表 HKLM:\SOFTWARE\Policies\Microsoft\Windows\HyperV
处添加名为 RequireSupportedDeviceAssignment
和 RequireSecureDeviceAssignment
的DWORD项, 值均为0
博主真是太厉害了!!!
您好,所以放一个我改好的驱动 这个下载链接失效了吗?我下载的时候提示401