Press "Enter" to skip to content

为Hyper-V在普通家用显卡上开启vGPU(GPU虚拟化)

Last updated on 2023/10/28

在Hyper-V弃用RemoteFx vGPU后为其启用vGPU的接替方案

非原创,内容来自于:<全网首发>家用显卡虚拟化vGPU,微软Hyper-V独有免费功能_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

感谢原作者的分享

注意:以上视频仅供参考,部分操作及解释可能已经过时,具体参考以下内容或参考其他最新教程、官方文档。

以下为开启vGPU所用到的命令:

$vm = "" //添加vGPU的虚拟机名称
$path = "" //设置要用来开启vGPU的显卡实例路径

Add-VMGpuPartitionAdapter -VMName $vm -InstancePath $path

Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 800000000 -MaxPartitionVRAM 1000000000 -OptimalPartitionVRAM 1000000000 -MinPartitionEncode 800000000 -MaxPartitionEncode 1000000000 -OptimalPartitionEncode 1000000000 -MinPartitionDecode 800000000 -MaxPartitionDecode 1000000000 -OptimalPartitionDecode 1000000000 -MinPartitionCompute 800000000 -MaxPartitionCompute 1000000000 -OptimalPartitionCompute 1000000000

Set-VM -GuestControlledCacheTypes $true -VMName $vm

上面$path实例路径可以通过执行(Get-VMHostPartitionableGpu).Name命令来获取,一般情况下使用第一个即可,而Set-VMGpuPartitionAdapter命令中所包含的来自宿主机GPU的一些参数可以通过执行Get-VMHostPartitionableGpu命令来获取,但是Set-VMGpuPartitionAdapter命令未必会起作用,可以忽略。

另有一些教程中会设置Set-VM的另外三个参数:LowMemoryMappedIoSpaceHighMemoryMappedIoSpaceHighMemoryMappedIoBaseAddress,但是需要注意的是,这三个参数在官方文档中并没有说明,其正确用法未知;LowMemoryMappedIoSpace支持的最小值为128MB,HighMemoryMappedIoSpace支持的最小值为512MB,但是根据我的测试,HighMemoryMappedIoSpace最小可设置为8GB,小于8GB会导致vGPU启动失败,而对于HighMemoryMappedIoBaseAddress参数,它指的是映射内存地址的起始地址,我认为应该设置为大于虚拟机的最大内存大小(甚至要大于最大内存 + 虚拟内存的总大小),我这里其默认值为63.5GB,为了对齐,可以将其设置为64GB。

另外,如果遇到虚拟机卡死,花屏等情况,除了可以尝试更改以上三个参数外,还可以尝试将GuestControlledCacheTypes参数设置为$false,如果仍有问题,可能需要更新或回退宿主机显卡驱动并对虚拟机驱动做同样的升级或降级处理后再行尝试。

下面是配置驱动时需要用到的路径、文件、方法:

与视频中不同的是,在最新的启用方法中,似乎无论 A 卡、N 卡、I 卡都只需要将对应驱动文件夹整体拷贝到虚拟机内的专用路径即可,不需要移动任何其它文件,我只测试了 N 卡和 I 卡确实有效。
宿主机驱动路径:%windir%\System32\DriverStore\FileRepository\
虚拟机拷贝路径:%windir%\System32\HostDriverStore\FileRepository\(自行创建此路径)

注意,视频中没有说到的一点是需要关闭下图中的这个选项,vGPU才会正常显示与工作:

最后,附上我成功开启vGPU后的截图:

非常感谢原作者的分享,这样一来极大扩展了Hyper-V的使用范围与可玩性,也使得Hyper-V除了网络层较差以外没有其它槽点了。

而对于Hyper-V的网络层,由于我实在是太懒了,不想专门写一篇文章,那就在这里抛砖引玉一下:

安装此PowerShell模块:HNS,可以用它创建类似于Default Switch一样通过GUI并不能创建的具有高级功能的虚拟交换机(例如NAT、ICS,甚至是直接修改、删除、新建Default Switch),但是由于此模块的官方文档几乎为零,第三方说明或者教程也几乎没有,需要自行摸索。如果有需要,可以直接联系我,我可以给予一点点基本的用法说明。也希望有大佬能对该模块做出详细解读,非常感谢。

Enjoy it!!!


    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注