Windows11のHyper-Vで作成したWindows10クライアント上でGPUを動かす

概要

Windows11のゲストOS上でGPUパススルー出来ればいいなと思ったのでメモ。

方法

ググるとここなどにやり方を書いているのですが、どうもうまくいかない。
結局ここのやり方でうまくいきました。

ゲストOS

設定は次の通り。

  • 世代は2で作成
  • チェックポイント無効
  • メモリは固定
  • セキュアブート有効

ファイルコピー

  • ホストOSのC:\Windows\System32\DriverStore\FileRepository\以下にあるnv_dispi.inf_amd64で始まるフォルダをゲストOSのC:\Windows\System32\HostDriverStore\FileRepository\ 以下にコピー
  • ホストOSのC:\Windows\System32\以下にある nvで始まるファイルをゲストOSのC:\Windows\System32\にコピー

ホスト側からの設定

ここでいったんゲストOSを停止して、管理者モードで起動したPowerShellコマンドプロンプトから以下を打ち込む

$vm = "ENTER YOUR VM NAME HERE"
Remove-VMGpuPartitionAdapter -VMName $vm
Add-VMGpuPartitionAdapter -VMName $vm
Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm

確認

ゲストOSを再度起動する。デバイスマネージャーからGPUが有効になっていることを確認。
タスクマネージャーではGPUが見られないので、Terminalなどで半透明にしたものが、透けて見えることで確認

ベンチマーク

FinalFantasy XV のベンチマークやってみました。

ホストOS

  • Windows 11 Pro
  • RTX 2060
  • memory 32G
  • Core i7 12700

ゲストOS

  • Windows 10 Pro
  • RTX 2060
  • memory 16G
  • Core i7 12700 CPU 10コア

ベンチマークパラメタ

  • 高画質 2560×1440 ウインドウ
  • ホストOS: 5025
  • ゲストOS: 3960

若干ゲストOS側が悪くなりましたが、まあ使えるレベルですね