HoudiniをAzure NV仮想マシンで動かす

# はじめに

これは[Houdini Advent Calendar 2016](http://qiita.com/advent-calendar/2016/houdini)の22日目の記事です。

エフェクト作成時の悩みとして、処理が終わるまでの待機時間がありますが、
その待機時間を高性能なマシンで短縮しようというのが、この記事の趣旨です。

この記事では、高性能なマシンをサクッと確保するため、
Microsoftが提供するAzure NV仮想マシンを用います。

# Azure NV仮想マシンとは？

Azure NV仮想マシンは、大雑把にまとめると、[NVIDIA Tesla M60 GPU](http://www.nvidia.co.jp/object/tesla-m60-jp.html)を搭載した、OpenGLを使用するアプリケーションが動く仮想マシンです。詳細はMicrosoftが下記のリンク先の通り案内を出していますので、そちらをご覧ください。

- [Azure N シリーズの一般提供を 12 月 1 日から開始 – IT プロフェッショナルのみなさまへ](https://blogs.technet.microsoft.com/jpitpro/2016/11/22/azure-n-series-general-availability-on-december-1/)

Azure NV仮想マシンは以下のとおり、3つのラインナップがあります。
いずれもCPUはXeon E5-2690 2.60GHzです。(2016年12月20日時点の情報です。)

|  | NV6 | NV12 | NV24 |
|:-:|:-:|:-:|:-:|
| コア数  | 6  | 12  | 24  |
|  GPU |  1 x M60 GPU | 2 x M60 GPU  | 4 x M60 GPU  |
| メモリ  |  56 GB |  112 GB |  224 GB |

## 料金

Azureは従量課金制なので、電気やガスと同様に使った分だけ料金が発生します。
料金はMicrosoftが提供する[料金計算ツール](
https://azure.microsoft.com/ja-jp/pricing/calculator/)で試算できます。
例えば、Azure NV仮想マシンの1時間あたりの料金は、下表のとおりです。
(※下表は2016年12月20日時点の情報ですので、最新の情報はご確認ください。)

|  | 米国中南部 |西ヨーロッパ| 東南アジア |
|:-:|:-:|:-:|:-:|
|NV6| ¥137 |¥163| ¥190 |
|NV12| ¥275 |¥325| ¥380 |
|NV24| ¥550 |¥650| ¥760 |

Azure NV仮想マシンは、NV6が最も単価が安く、NV24が最も単価が高いです。
どの地域で仮想マシンを立てるかによっても価格が変わります。
この中では米国中南部が一番安いことがわかります。

[仮想マシンの課金の仕組み](https://blogs.msdn.microsoft.com/dsazurejp/2015/01/09/23/)は色々ルールがありますが、仮想マシンについては以下のとおりになっています。
> 仮想マシンの課金は時間ごとに課金され、割り当てがされている時間の分だけ課金が発生します。課金を停止するにはポータルから停止し、「割り当て解除済み」状態にすることで、CPUおよびメモリが解放され課金を停止することができます。

いずれにせよ、恵比寿のランチ代よりは安いと思っています。

# マシンの性能アップとHoudiniの処理速度

「待機時間を高性能なマシンで短縮」するためには、お題となる処理が必要です。
そこで、今回は下記のチュートリアル動画にある「ジオメトリをファイルに起こすまでの処理」(動画 3:56)を使ってみます。

- [Tutorial Pyro explosion shader on Vimeo](https://vimeo.com/116385425)

このチュートリアル動画(3:56)まで、ほぼ同様な手順を踏み、
ジオメトリをファイルに起こすまでの処理時間をNV6とNV24で比較してみます。

比較した結果は下表の通りです。

|  | NV6  | NV24 |
|:-:|:-:|:-:|
| コア数  | 6 | 24  |
| 所要時間  | 22分 | 7分30秒  |

所要時間についてはHoudiniのダイアログに表示された経過時間です。
表をみると、コア数が4倍になると、所要時間は1/3になっていることがわかります。
Houdiniがイケてるアプリケーションと思わせてくれますね。

また別の機能で調べてみると、面白いことがわかるかもしれませんね。

## Houdiniを動かすまで

ざっくりとした手順を示します。

1. Azure NV仮想マシンを作る
  - Azureポータルから実施する。OSにWindows Server 2016 DataCenterかWindows Server 2012 R2 DataCenterを選択すると仮想マシンの作成が楽だと思います。 
  - 仮想マシンの作り方は「[Azure ポータルで初めての Windows 仮想マシンを作成する](https://docs.microsoft.com/ja-jp/azure/virtual-machines/virtual-machines-windows-hero-tutorial)」が参考になります。
2. NVIDIAのドライバーをインストールする
  - ドライバーは[Set up GPU drivers for N-series VMs](
https://docs.microsoft.com/en-us/azure/virtual-machines/virtual-machines-windows-n-series-driver-setup)の見出し「NVIDIA GRID drivers for NV VMs」近辺にあるリンクからダウンロード可能です。
3. Houdiniをインストールする
  - Houdiniの機能を試すだけであればHoudini Apprenticeで十分かと思います。

下図はAzure N24のデバイスマネージャの様子です。
Tesla M60が4枚搭載されていることがわかります。圧巻ですね。

![AzureNV24-DeviceManager-after.png](https://qiita-image-store.s3.amazonaws.com/0/105984/ae1fbef0-9850-f923-ccdc-e55ca3b460d8.png)

下図はAzure N24のHoudiniにシミュレーションさせたときのタスクマネージャの様子です。
CPUを使っていることがわかります。

![AzureNV24-TaskManager.png](https://qiita-image-store.s3.amazonaws.com/0/105984/3d89c988-6182-14a3-b03e-14feac44a986.png)


# まとめ

以上の通り、HoudiniをAzure NV仮想マシンで動かす方法について紹介しました。

Azure NV仮想マシンは金銭面では利用の敷居が低いので、「高性能なマシンは持っていないけど、Houdiniのこの機能を試してみたい」という場合や、シミュレーション結果をディスクに残したい場合などでは有効だと思います。

マシンを調達する方法として、HPやDELL、そして[BOXX](http://www.boxx.com)から買う以外に、クラウドサービスも視野に入れると良いことあるかもしれませんね。

本エントリーが読者様に少しでもお役に立てれば幸いです。