前回のHyper-V上のUbuntuでCUDAを導入する 準備編で、Hyper-V上でCUDAをGPUパススルーを用いて実現しようとしたのですが、そもそも仕様でそんなことはできないことが判明しました。
こちらの本家ページ Which graphics virtualization technology is right for you?にあるように、DDAという最新機構をもったものがGPUパススルーであり、CUDAを利用するための要件になっているようである。
何が問題か?
勘違いしていた点をまとめておきます。
- RemoteFXはGPU仮想化の一種ではあるが、純然たるパススルーではなく、ハイパバイザが翻訳するタイプのものらしい。
- この場合、ドライバもネイティブのものではなくRemoteFXドライバというものをゲストOSに入れる。
- RemoteFXで対応できるのは、DX11.1, OpenGL4.4, OpenCL1.1まで。なのでGPGPUができないわけではない。
- それとは別にいわゆるGPUパススルーである、DDAというのが新しいHyper-V に入り、それならCUDAを含めたネイティブのGPUドライバが使える。
- DDAは現状Windows Server 2016にのみ入っている。ServerとClientOSの違い上の問題で、Windows 10に入れるのは難しい模様。
IOMMUなどの要件はDDA用のものでした。
RemoteFXとDDAの関係
上記資料にある通りですが、わかりやすく書くと、以下のようなイメージのようです。
以下のようにGPU利用のシナリオを考えると、上からDDA、RemoteFX、WARP(ソフトウェアエミュレーション)が担当するということのようです。
他のハイパバイザならWindows10でパススルーに対応しているようなので、そちらを試してみたいと思います。