[Hyper-V] [Windows] vGPU半虚拟化
添加 vGPU
首先, 创建一个Hyper-V Windows虚拟机. 这里以 WinServer
为例
创建并安装完成虚拟机后关机, 关闭检查点功能.
使用管理员身份打开Powershell. 输入以下代码, 添加GPU分区后无法修改内存分配大小, 如果需要更改内存分配, 先执行Remove-VMGpuPartitionAdapter -VMName $vmName
再修改, 修改后再执行下面的代码
$vmName = "WinServer" # 这里替换成你的虚拟机名称
Set-VM -GuestControlledCacheTypes $true -VMName $vmName
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vmName
Set-VM -HighMemoryMappedIoSpace 32Gb -VMName $vmName
Add-VMGpuPartitionAdapter -VMName $vmName
启动虚拟机, 打开设备管理器, 可以看到已经出现宿主机显卡, 但是有感叹号, 未正常驱动.
提取显卡驱动
Nvidia 显卡
打开 C:\Windows\System32
提取nvapi64.dll
打开C:\Windows\System32\DriverStore\FileRepository
提取nv开头的6个驱动
复制nvapi64.dll
到虚拟机C:\Windows\System32
复制nv开头的6个驱动到虚拟机C:\Windows\System32\HostDriverStore\FileRepository
重启虚拟机, 可以看到vGPU已经成功驱动. Windows11的圆角也正常显示
AMD/Intel 显卡
打开Driver Store Explorer, 找到自己的显卡
打开驱动文件夹
把这个文件夹复制到虚拟机的C:\Windows\System32\HostDriverStore\FileRepository
下
重启虚拟机, 可以看到vGPU已经成功驱动. Windows11的圆角也正常显示
检测GPU是否工作
Powershell中输入dxdiag
可以看到所有加速已经正常启动(不要使用增强会话/RDP, 这样会禁用3D加速)
随便打开一个视频, 打开宿主机的任务管理器, 可以看到已经GPU已经正常占用
注意: 此方法为vGPU, 不支持nvidia-smi, 宿主机中装WSL的话, cuda加速大概也是不支持的, 任务管理器也看不到, 和显卡直通还是有一定区别的.