0%

Windows 11 の Hyper-V マシンに GPU を割り当てる(GPU-PV)

GTX1080 から RTX 3090 に乗り換えたので、GPU-PV(旧名GPU-V) を改めて試してみようかなと
2020/11 頃に某ゲームを多重起動するために Windows 10 で実施していましたが、その時と手順は全く変わりませんでした。

現存する仮想マシンに GPU を使ってもらう方法

  1. DDA
    • グラボが限定されます
  2. Remote FX
    • 廃止済、今はできないはず
  3. GPU-PV(旧名GPU-P)
    • 今回はコレ

前提

  • ホストマシン
    • Windows 11 OSビルド 22621.1992
    • CPU: Ryzen9 3950X (16core/32threads)
    • GPU: RTX 3090
  • ゲストマシン
    • Windows 11

手順

0. Hyper-V を実行するホストマシンでは事前に以下の設定をしておく

  1. マザーボード側で VT-x または SR-IOV を有効化しておく
  2. Windows 側で Hyper-V を有効化しておく(機能の有効化)

1. Hyper-V で Windows 11 マシンを作成する

2. ホスト側 で以下コマンドを実行

Windows 11 マシンを停止し、管理者権限で以下 PowerShell を実行

1
2
3
4
5
6
$MachinName="Hyper-V 上のマシン名"
Add-VMGpuPartitionAdapter -VMName "${MachinName}"
Set-VMGpuPartitionAdapter -VMName "${MachinName}" -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 "${MachinName}"
Set-VM -LowMemoryMappedIoSpace 1GB -VMName "${MachinName}"
Set-VM -HighMemoryMappedIoSpace 32GB -VMName "${MachinName}"

3. ホストマシンからゲストマシンへファイルをコピーする

ホストからのコピー元とゲストへのコピー先のパスが異なるので別々に記載、2つのファイルがあります。

以下の二つのファイルがコピー元

    1. PowerShell で以下を実行すると出てくるフォルダ丸ごと
      1
      2
      explorer.exe "$(Get-CimInstance -ClassName Win32_VideoController -Property * | Select-Object -ExpandProperty InstalledDisplayDrivers | Write-Output)".Split(",")[0].Trim("\nvldumdx.dll")
      例: C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_50916785244854f2
    1. C:\Windows\System32\nvapi64.dll

コピー先

    1. C:\Windows\System32\HostDriverStore\FileRepository\ #HostDriverStore 以下のフォルダは自身で作成してください。
    1. C:\Windows\System32\ #ホストと同じ場所

ここまで実施して再起動するとデバイスマネージャーに表示される
どこかに漏れがあるとビックリマークついてるかもしれません。

  • うまくいった例
    image

  • うまくいってない例
    image

どんな感じ?

ゲスト側のタスクマネージャでは GPU 表示されない

ゲスト側の使用率はゲスト側で見たかったんですけど見えず、0 % 表示

image

ただ FF14 ベンチが動作したので GPU は使えている様です

image

ホスト側 FF14ベンチ (4K)

image

ホスト側 FF14ベンチ (FullHD)

image

ゲスト側 FF14ベンチ (4K)

image

ゲスト側 FF14ベンチ (FullHD)

image

ゲスト側 FF14ベンチ (4K)

  • 設定値を少し変えた、わかりにくいですが、1桁あがっていたりしています。
    1
    Set-VMGpuPartitionAdapter -VMName "HyperVマシン名" -MinPartitionVRAM 1000000000 -MaxPartitionVRAM 1000000000 -OptimalPartitionVRAM 1000000000 -MinPartitionEncode 1000000000 -MaxPartitionEncode 1000000000 -OptimalPartitionEncode 100000000 -MinPartitionDecode 1000000000 -MaxPartitionDecode 1000000000 -OptimalPartitionDecode 1000000000 -MinPartitionCompute 1000000000 -MaxPartitionCompute 1000000000 -OptimalPartitionCompute 1000000000

image

  • 20230725追記
    設定値戻してもスコアがあがる事はありませんでした。何の差なんだ・・・

Surface Laptop 3 (4K)

手元にあった Surface でもベンチしました。驚愕のスコア

image

体感

GPU-PV ないよりはいいかも、な感じ
-> 20230725追記: 6000くらい出ている時は結構いい

参考にしたサイト

おまけ

これを管理者権限有効 PowerShell で実行すると拡張セッション無し解像度4Kが使える様になる

1
Set-VMVideo -VMName "HyperVマシン名" -HorizontalResolution 3840 -VerticalResolution 2160 -ResolutionType Single