最近のCPUには仮想化支援機能がついているので、ここ最近hyper-Vを使って遊んでいる。
windows11の上にまたwindows11を立てているが、なかなか軽快に動く。
windowsが完全におもちゃと化すので面白い感覚である。
(メモ:データを共有したい場合は拡張セッションを使ってUSBメモリのドライブを共有している)
ただ、仮想PC上では動画再生がカクカクだったので、流石にもう少しなんとかならんのか?と思い調べてみるとGPU-P(GPU パーティショニング)という方法で仮想PCとホストとでGPUを共有するやり方があり、試してみたのでその時のメモ。
参考元:Hyper-VでGPU(GPU-PV)を利用する方法 (Windows 10以降編)
環境
前記事参照。
※ここではRyzen 7 5700G(APU)を使って仮想PC上のwindows11からホスト(windows11)側のGPUを利用することを想定する。
事前準備
(1)BIOS設定
①SVM mode を有効化(hyper-Vをやるなら最初に有効化すべき項目)
②IOMMU を有効化
私は②がauto設定になっていてハマった。明確にenableにする必要がある。
(autoだとだめだった。また②がなくても仮想化自体はできるのでわかりにくい...。)
(2)host側でpowershellを管理者権限で実行
下記を実行する
Add-VMGpuPartitionAdapter -VMName "仮想PC名※パラメータは適宜変更。
Set-VMGpuPartitionAdapter -VMName "仮想PC名" -Passthru
Set-VM -GuestControlledCacheTypes $true -VMName "仮想PC名"
Set-VM -LowMemoryMappedIoSpace 1GB -VMName "仮想PC名"
Set-VM -HighMemoryMappedIoSpace 8GB -VMName "仮想PC名"
一旦設定した変更を消すなら
Remove-VMGpuPartitionAdapter -VMName "仮想PC名"でやり直し
(3)仮想PC上にドライバをコピーする
下記のコマンドをpowershellで実行することでドライバの場所を探す。
Get-CimInstance -ClassName Win32_VideoController -Property * | Format-Table InstalledDisplayDrivers上記コマンドで出てくるC:\Windows\System32\DriverStore\FileRepository以下にあるフォルダ(AMD環境だとXXXXXXXX.inf_amd64_XXXXXXXXXXXXXXXXという名前のはず)を仮想PC側のC:\Windows\System32\HostDriverStore\FileRepository\にコピーする。ホスト側を触るので気をつけたい。
※仮想PC側にHostDriverStore以下は初回は無いので自分で作る。
ここまでやって仮想PC側を再起動する。問題なければタスクバーがGPUによって半透明化されるはず。
さらにデバイスマネージャーから問題が発生していないことを確認すればok。

とりあえず紙芝居ではなくなったのでまぁ満足。
一番のハマりドコロはBIOS設定の「②IOMMU を有効化」であった。autoだから使えると思いこんではいけない。
