今回はWindows Server 2022をインストールしたVMにGPU-Pを導入するというマイナー中のマイナーなテーマです。
というかGPU-PVなのかGPU-Pなのかあんまりよくわかってないです。。。
Easy-GPU-PVでやりたい
Easy-GPU-PVでできるかなと思い試してみたのですがダメでした
というわけで手動でGPU-Pを導入してみます。
手動で導入する手順
qiita.com
上記ブログを参考にさせていただきました。ありがとうございました。m(__)m
前準備
とりあえずWindows Server 2022 evaluationをダウンロードしてVMを作成します。
作成できたら設定でコア数を増やしたり、チェックポイントをオフにしておきます。
GPU-P導入
Powershell管理者モードでGPU-P機能をVMに導入していきます。
Add-VMGpuPartitonAdapterでGPU-P機能を追加します。
$VMName = "作成したVMの名前をここに入力" #GPU-P機能を追加 Add-VMGpuPartitionAdapter -VMName $VMname
次に割り当てるリソースを決めます。
ここの数値はかなりわかりづらく、また割り当てリソースも決めたかったのでEasy-GPU-PVのスクリプトを参考にしました。
$deviderに何分の1のリソースを割り当てるか入力します。例えば50%のリソースを割り当てるなら2を(2分の1という意味)、 10%を割り当てるなら10を入力します。
#GPUを割り当てるリソースを決めます $devider = "何分の1" Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionVRAM ([math]::round($(1000000000 / $devider))) -MaxPartitionVRAM ([math]::round($(1000000000 / $devider))) -OptimalPartitionVRAM ([math]::round($(1000000000 / $devider))) Set-VMGPUPartitionAdapter -VMName $VMName -MinPartitionEncode ([math]::round($(18446744073709551615 / $devider))) -MaxPartitionEncode ([math]::round($(18446744073709551615 / $devider))) -OptimalPartitionEncode ([math]::round($(18446744073709551615 / $devider))) Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionDecode ([math]::round($(1000000000 / $devider))) -MaxPartitionDecode ([math]::round($(1000000000 / $devider))) -OptimalPartitionDecode ([math]::round($(1000000000 / $devider))) Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionCompute ([math]::round($(1000000000 / $devider))) -MaxPartitionCompute ([math]::round($(1000000000 / $devider))) -OptimalPartitionCompute ([math]::round($(1000000000 / $devider)))
次にキャッシュタイプとMMIOスペースの設定を入れます
Discrete Device Assignment を使用したグラフィックス デバイスのデプロイ | Microsoft Learn
個別のデバイスの割り当てを使用したデバイスのデプロイの計画 | Microsoft Learn
このあたりに理由が書いてあります。
ここMMIOスペースも数台で動かすならリソース配分などがいるかもしれませんが、とりあえず書いているままに設定します。
Set-VM -GuestControlledCacheTypes $true -VMName $VMname Set-VM -LowMemoryMappedIoSpace 3GB -VMName $VMName Set-VM –HighMemoryMappedIoSpace 32GB –VMName $VMName
これでpowershellでのGPU-P導入は終わりです
ドライバーのコピー
次にドライバーをVM内に入れます。ドライバをウェブからダウンロードしてきてインストールしてもエラーになるそうで、ホストのドライバーファイルを直で入れることが必要みたいです。
(ホストのデータをVMにコピーする手法はVHDをマウントする方法もあるのでしょうが、うまくいかないのでネットワークドライブにしました。
ipconfigでVMのIPをとって、\\VMのIP\C$ と入力しました。)
まずドライバーをとっていきます。参考にした記事から、
- C:\Windows\System32\nvapi64.dll
- C:\Windows\System32\DriverStore\FileRepository\ドライバーファイル\nvapi64.dll(ドライバーファイルごと)
の二つを導入していきます。
System32直下のdllファイルはそのままVMのSystem32に入れます。
FileRepositoryにあるnvapi64.dllは入っているファイルごと入れます。VMではDriverStoreではなく、HostDriverStoreというファイルを作成してそこに入れます。
- C:\Windows\System32\HostDriverStore\FileRepository\ドライバーファイル
となるようにしてください。
ドライバーファイルはたぶんGPUの機種によって違うと思います。僕の場合は
- nv_dispig.inf_amd64_xxxxxxxxxxxxx
みたいな感じでした。
ここまでできればVM再起動してあげます。
結果の確認
再起動してデバイスマネージャーを見てみましょう
GPUが認識されています。
ベンチ取ります。novabenchです。
ちゃんとGPUもベンチが取れています。
こんな感じでWindows Server 2022にvGPUを搭載することができました。
Parsecなんかを使ってApexなどのゲームもできます。
まあでも利用用途がよくわからないですが、、、ゲーミングPC一台だけで複数人で遊びたいときとかですかね?
こんな感じで以上です。GPU-Pはおもしろいですね