由于非Windows Server系统的Hyper-v难以直接使用SR-IOV,所以这里我们使用基于SR-IOV的GPU分区技术完成对GPU的虚拟化
这里我使用Win11 Arc 140V核显,虚拟机名称canary
在设备管理器中获得需要虚拟化的设备的实例路径,记住框选住的内容"DEV_64A0"
在终端执行Get-VMHostPartitionableGpu
或者Get-VMPartitionableGpu
Name : \\?\PCI#VEN_8086&DEV_64A0&SUBSYS_1E131043&REV_04#3&11583659&0&10#{064092b3-625e-43bf-9e
b5-dc845897dd59}\GPUPARAV
ValidPartitionCounts : {32}
PartitionCount : 32
TotalVRAM : 1000000000
AvailableVRAM : 1000000000
SupportsIncomingLiveMigration : False
MinPartitionVRAM : 0
MaxPartitionVRAM : 1000000000
OptimalPartitionVRAM : 1000000000
TotalEncode : 18446744073709551615
AvailableEncode : 18446744073709551615
MinPartitionEncode : 0
MaxPartitionEncode : 18446744073709551615
OptimalPartitionEncode : 18446744073709551615
TotalDecode : 1000000000
AvailableDecode : 1000000000
MinPartitionDecode : 0
MaxPartitionDecode : 1000000000
OptimalPartitionDecode : 1000000000
TotalCompute : 1000000000
AvailableCompute : 1000000000
MinPartitionCompute : 0
MaxPartitionCompute : 1000000000
OptimalPartitionCompute : 1000000000
CimSession : CimSession: .
ComputerName : NEPTUNE
IsDeleted : False
即使只装了一块GPU,此处也可能会返会多个对象,这里复制包含上步"DEV_64A0"字样的完整设备路径,记得去掉换行
后面需要频繁使用虚拟机名称,这里先存入变量方法后续设置
$vm = "canary"
$gpu_path = "\\?\PCI#VEN_8086&DEV_64A0&SUBSYS_1E131043&REV_04#3&11583659&0&10#{064092b3-625e-43bf-9eb5-dc845897dd59}\GPUPARAV"
添加虚拟机到gpu分区
Add-VMGpuPartitionAdapter -VMName $vm -InstancePath $gpu_path
配置虚拟gpu分区
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 80000000 -MaxPartitionVRAM 100000000 -OptimalPartitionVRAM 100000000 -MinPartitionEncode 80000000 -MaxPartitionEncode 100000000 -OptimalPartitionEncode 100000000 -MinPartitionDecode 80000000 -MaxPartitionDecode 100000000 -OptimalPartitionDecode 100000000 -MinPartitionCompute 80000000 -MaxPartitionCompute 100000000 -OptimalPartitionCompute 100000000
Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm
HighMemoryMappedIoSpace不建议设置的过小,否则可能会出问题
最后一步,复制驱动文件到虚拟机
复制物理机C:\Windows\System32\DriverStore\FileRepository
到虚拟机C:\Windows\System32\HostDriverStore\FileRepository
HostDriverStore文件夹需要手动创建
完成后重启虚拟机,应该就可以在任务管理器里看见gpu了