[Hyper-V] [Windows] vGPU半虚拟化

Hyper-V vGPU 半虚拟化 (Ubuntu) 教程

添加 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加速大概也是不支持的, 任务管理器也看不到, 和显卡直通还是有一定区别的.


[Hyper-V] [Windows] vGPU半虚拟化
http://localhost:8090/archives/hypervgpuwin
作者
Gzcheng
发布于
2024年10月19日
更新于
2024年12月17日
许可协议