VMware vSphere ESXi を試してみよう。目的は、WindowsとLinuxを同時に起動して、GPGPUが扱えるかテストすることだ。
1. VMware vSphere ESXiの仕組み。
ここで、VMware ESXiのプログラムを起動したとき出てくるイラストを見てみよう。
最初はホストマシンの上から全て制御できるのかと思っていたけれども、違うのね。ハイパーバイザにより管理されたコンピュータ(サーバ)が存在し、これに対してクライアントからアクセスする。 今回は、ホストマシンの上にWindows 7とUbuntuをインストールしてみた。
ホストマシンのインストール自体は、すぐに完了できる。ESXiのブートイメージを作成して、起動、インストールすれば終了だ。
ただし、はまったのは、ESXiの5.x系から、RealTekのLANのドライバが認識されなくなったらしい。このため、僕の使っているマザーボードでは、LANポートを見つけることができず、ESXiのインストールに失敗してしまう。
そこで、カスタムのイメージを作成してインストールする。参考にしたのは、以下のサイトだ。
ESXi 6.0で実行したので、PowerShellとVMware CLIをインストールして、以下のコマンドを実行するだけでISOイメージを作成することができた。
.\ESXi-Customizer-PS-v2.4.ps1 -v60 -vft -load sata-xahci,net55-r8168
という訳で、ESXiのインストールは完了し、その上のクライアントOSとしてWindows 7 とUbuntu 15.10をインストールするところまで完了した。クライアントはノートPCを利用し、サーバにVMware ESXi, Windows7, Ubuntu 15.10をインストールしたという訳だ。
Windows 7とUbuntuを同時起動した図。なかなか壮観だ。
2. で、結局ハイパーバイザ上のOSでGPGPUは使えるのか?
今回のトライをする前にいろいろ調査していたのだが、結論としては僕の持っているGeForce系では無理っぽい。nVIDIAの提供するGRID系とか、Tesla系のGPGPUならばダイレクトパッシングによるゲストOSからのアクセスをサポートしているらしいが、GeForceでは無理っぽい。
やったこととしては、ESXi Clientの設定画面にて、まずはゲストマシン上に接続されたGeForceカードが仮想マシンに直接アクセスできるように設定する。 [仮想マシンの設定]ページから[構成]→[詳細設定] で行ける。
次に、Ubuntu 15.10の仮想マシンの設定で、ハードウェアとしてGeForceを追加する。
仮想マシンのメニューから[設定の編集]→[ハードウェア]ペイン→[追加]で、[PCIデバイス]でGeForceが選択できるようになっている。これを追加した。
この結果、lspciによってGeForceが認識されたのだが、何故かCUDAから認識されない。
一応、debパッケージを使って最新のCUDAのドライバを入れたんだけどなあ。。。
$ lspci | grep NVIDIA 0b:00.0 VGA compatible controller: NVIDIA Corporation GK110B [GeForce GTX 780 Ti] (rev a1) $ nvidia-detector none
もうちょっとなんだけど、そもそもこれって、Ubuntuをネイティブにインストールしてもちゃんと認識できるんだろうか? そこも調査する必要があるなあ。