fc2ブログ

Reality その6:ネットワークレンダリングとLinux

Category : Reality
『Reality その2:LuxRenderでのポストワーク』にて、LuxRenderのNetworkタブの解説として、ネットワーク上の他のコンピュータにレンダリング作業を分散させるネットワークレンダリングについて少し触れました。今回はそれがどのくらい有効なのか、実際のレンダリングで検証したいと思います。
LuxRenderでのレンダリングは非常に時間のかかる作業です。寝る前にセットして、朝起きたら止めるなんて余裕です(-_-;) そのため、GPUによるレンダリング補助(将来のバージョンで導入される予定です)やネットワークレンダリングが用意されているのです。しかし、シーンの複雑さによってメモリ使用量が増大するため、レンダリングを行うPCの性能が求められるということは何度かお伝えしてきました。ネットワークレンダリングの作業を分担するスレイブPCがWindowsXP(32bit)では難しいので、今回は64bitLinuxにLuxRenderをインストールしてスレイブとして使うということまでやってしまいます。
※LuxRenderのネットワークレンダリングでは、スレイブPCのOSを問いません。

Reality6 SS

■ネットワークレンダリングの方法

まずは簡単にネットワークレンダリングの仕方をおさらいしておきます。
※最初にLuxRenderでレンダリングを始めたPCをマスター、作業を分担するPCをスレイブと呼びます。

(1)スレイブPCでluxconsoleをサーバーモードで起動します。
そのためにはコマンドプロンプト(ターミナル、コンソール)で

luxconsole -s


と実行します。Windowsではスタートメニューに「Start LuxRender Slave」というショートカットがあるので、それを実行して下さい。
この時、表示されるIP Addressを覚えておいて下さい(表示されない場合はifconfigなどのコマンドで確認します)。
luxconsoleとはコマンドラインベースのLuxRenderで、GUIはありませんがもくもくとレンダリングをしてくれるいいヤツです。

(2)マスターPCでレンダリング中にNetworkタブを開き、Server欄に先ほどのIP Addressを入力、+ボタンをクリックします。

(3)データがスレイブPCに送られるのをじっと待ちます。

(4)マスターPCのレンダリングが再開され、Update Intervalの秒数毎にスレイブPCからレンダリングデータが送られてくるようになります。

 ・スレイブPCでのレンダリングを終了したい場合は、マスターPCのLuxRenderのNetworkタブを開き、Server欄の-ボタンをクリックしてから、スレイブPCのコマンドプロンプトを閉じます。
 ・マスターPCのLuxRenderを終了させると、スレイブPCのluxconsoleは待機状態になります。
 ・マスターPCのLuxRenderでレンダリングをPauseまたはStopした場合でも、スレイブPCではレンダリングが継続し、マスターPCへデータを送り続けます。

ネットワークレンダリングをするにはLAN上の他のPCとデータのやり取りをしなければいけません。そのため、アプリケーションの予期しない通信をブロックするファイアウォールソフトが邪魔をしてしまう場合があります。私の場合はWindows7をスレイブとした時Windowsファイアウォールが通信をブロックしていたので、それを許可する必要がありました。
手順としては、コントロールパネルでセキュリティ>Windowsファイアウォールとクリックし、左の「Windows ファイアウォールを介したプログラムまたは機能を許可する」をクリックします。
Reality6 Windowsファイアウォール設定1

表示されるリストから「LuxRender Slave」を探してチェックを入れます。ホーム/社内(プライベート)にチェックの入っている方でいいようですが、環境によって変わってくるかもしれません。
Reality6 Windowsファイアウォール設定2


■Linux版LuxRenderのインストール

さて、上記の方法で2台のPCを使ってネットワークレンダリングをしようとしたのですが、以前の記事でも書いたように問題がありました。それは、簡単なシーンしかレンダリングできないという点です。スレイブPCとして使おうと思っているマシンは4GBのメモリを積んでいるものの、32bitのWindowsXPです。『Reality その5:32bitWindowsでの運用』の記事で書いたように、V4フィギュア1体置いただけでもテクスチャの量によってはエラーで止まってしまいます。しかもスレイブとして使うPCではLuxRenderはマスターの時よりも多量のメモリが必要になるようです。

※後でわかったことですが、ネットワークのスレイブとなるPCではテクスチャの管理が非効率になってしまっているようです。例えばV4の胴体マテリアルの場合Diffuseテクスチャは1枚しか使われていないのですが、SpecularとBumpテクスチャは同じものが5枚ずつ(マテリアルの数だけ)使われていました(ログとテンポラリフォルダで確認)。しかも、DS上で隠したオブジェクトやパーツもマテリアルファイル上では記述がされているようで、その分のテクスチャもスレイブPCに送られるようです。LuxRenderの問題なのかRealityの問題なのかは不明です。

そこで、無料で導入できる64bitのLinuxをインストールしようと考えました。
ここで私がやった通りに手順を書いても、環境によって同じ工程が必要になるかはわかりませんし、OSのインストールには自分で調べてできるぐらいのスキルがないと危険だと思いましたので、飛ばします。
すんなりいけば、30分ぐらいで起動まで持っていけます。私にとってのチェックポイントはWindowsとのデュアルブートと、マルチディスプレイでした。
私は初Linuxでしたので、無数にあるディストリビューションの中から導入が簡単だと言われているUbuntu10.04(AMD64)を選びました(AMDと書いてありますがIntel機でも使えるようです)。

ここから、Ubuntu(AMD64)にLuxRender(バイナリ)をインストールする手順を解説します。

(1)LuxRenderの公式ページのDownloadより「LuxRender Linux 64bit」をダウンロードします。
Reality6 Linux版インストール1
※マスターPCと同じバーション(Reality1.01だとv0.7)をダウンロードして下さい。

(2)上のパネルのメニューから 場所>ダウンロード を選択し、ダウンロードフォルダを開きます。
Reality6 Linux版インストール2

(3)ダウンロードしたファイル(luxrender-0.7-x86_64-sse2.tar.bz2)をダブルクリックします。
Reality6 Linux版インストール3

(4)書庫マネージャが開きますので、ファイルをデスクトップに展開します。
Reality6 Linux版インストール4

(5)上のパネルのメニューから アプリケーション>アクセサリ>端末を選択します。
Reality6 Linux版インストール5

(6)端末が起動しますので、そこでルート権限でファイルマネージャを起動します。
そのためには、端末で

sudo nautilus


と入力しENTERキーを押します。するとアカウントのパスワードを聞かれるので、入力してENTERキーを押してください。

(7)起動したファイルマネージャで場所ファイルシステムをクリックし、 /usr/local/bin へ移動します。

(8)デスクトップ上の(4)でできたフォルダを開き、その中の実行ファイルを(7)のウィンドウにドラッグ&ドロップします。
Reality6 Linux版インストール6
※画像では全部移動させていますが、LuxBlend_0.7.pyとpylux.soはBlender用だと思いますので必要なさそうです。

(9)端末のウィンドウをクリックした上でCtrl+cキーを押してファイルマネージャを終了し、端末を閉じます。

必要があれば、パネルのアプリケーションメニューやデスクトップにLuxRenderを登録してください。


■Linuxをネットワークスレイブにする

さて、無事にUbuntuのインストールとLuxRenderのインストールまで済ませました。
これがどのくらいの性能を発揮するのか、このようなシーンで確認してみました。
襲いかかる女剣士
Character:Victoria 4.2 : Elite Utopian
Skin:Angel for V4
Hair:V4 Ranger , Ranger Hair Color and Movement
Costume:Fighting Fae Armor for V4
Renderer:LuxRender through Reality plugin

このシーン、スレイブにWindowsXP 32bitを使うとメモリが足りなくてエラーになってしまいます。そこで、スレイブPCのOSを64bitLinuxに変更し、レンダリング性能を計測します。

マシンの性能はこのようになっています。

<マスターPC>
OS:Windows7 64bit
 CPU:Intel Core2Quad Q9550 (4コア2.83GHz)
 Memory:8GB
 Graphic:Geforce 9600GT 512MB

<スレイブPC>
OS:Ubuntu10.04 AMD64
 CPU:AMD AthlonII X4 620 (4コア2.6GHz)
 Memory:4GB
 Graphic:Radeon HD5450 512MB

スレイブPCの起動直後の使用メモリ量は約530MiBです。
Reality6 メモリ使用量 起動直後
上のシーンのレンダリングが始まると3.3GiBまで使用します。
Reality6 メモリ使用量 レンダリング中
※単位はWindowsで表記されるMB、GBと同じです。
luxconsoleの使用メモリ量は約2.8GiBと、確かにWindowsXP 32bitではエラーが出てしまう量です。

(A1)マスターPCのみのレンダリング
レンダリング時間:2時間21分14秒
平均のサンプリング数/秒:114932TotS/s
画像のサンプリング数/pixel:2000S/px

(B1)スレイブPCとのネットワークレンダリング
レンダリング時間:1時間16分38秒
平均のサンプリング数/秒:214640TotS/s
画像のサンプリング数/pixel:2026S/px

2倍近くスピードアップがされていることがお分かりいただけたでしょうか?予想以上の効果です。
このスレイブPCではメモリが4GBしか積まれていませんので周りに何もない寂しいシーンになってしまっていますが、もっとメモリを増やせば複雑なシーンでも大丈夫です。一応搭載メモリ量をオーバーしても、HDDのスワップ領域を使うのでレンダリングはできるのですが、速度がガクンと落ちてしまうのでメモリ容量内での使用をオススメします。

このコスチュームが気に入ったので別ポーズでもう1枚レンダリングしました。
たたずむ女剣士

(A2)マスターPCのみのレンダリング
レンダリング時間:1時間39分49秒
平均のサンプリング数/秒:162625TotS/s
画像のサンプリング数/pixel:2000S/px

(B2)スレイブPCとのネットワークレンダリング
レンダリング時間:52分44秒
平均のサンプリング数/秒:313430TotS/s
画像のサンプリング数/pixel:2036S/px

もう少し突き詰めてみようとCUI環境でUbuntuを起動してGUI(GNOME)に使う分のメモリを削減してみました。その場合の起動直後のメモリ使用量は283MiBと、かなり減ります。UbuntuのCUI起動にはGrub2の設定を書き換える方法を使いました。Ubuntuマシンをネットワークレンダリングにだけ使うならコマンドラインだけで十分ですし、問題なくluxconsoleも起動できましたので、これも有効ではないかと思います。


■Linux版LuxRenderでのレンダリング

ここからはおまけコーナーです。
前の記事でWindows32bit環境しか無い場合に、レンダリングのためにLinux64bitを導入するのをご提案しました。
今回せっかくその環境ができたので、ネットワークスレイブとして使うだけではなくスタンドアロンでレンダリングしてみようと思い立ちました。

 ・Linux版DAZ Studioはありませんので、LuxRenderに渡すファイルはWindows32bit上で作成します。
 ・Linux上からテクスチャデータが入ったWindowsのパーティションへアクセスする必要があります。
 ・LinuxはUbuntu10.04(AMD64)で話を進めていきます。

※上でご紹介しているように、ネットワークレンダリングのスレイブとしてLinuxを使う場合は、次のような手続きは必要ありません。アプリケーション1つを立ち上げておくだけで大丈夫です。

(1)Windows32bit上のDAZ Studioでシーンを作成し、LuxRenderでレンダリングを始めます。メモリオーバーしてしまってレンダリングができないとしても諦めず、できたファイルの場所を覚えておきます。

(2)WindowsをシャットダウンしてUbuntuを起動します。

(3)ホームフォルダに作業用の「Reality」フォルダを作成します。

(4)Windowsのパーティションをマウント(上のパネルの場所メニューから目的のものをクリックするだけです)します。

(5)Realityフォルダへ(4)から(1)で作成されたファイル(lxm、lxo、lxsの3つ)をコピーしてきます。

(6)lxmファイルをgeditなどのテキストエディタで開き、テクスチャのパスを書き換えます。UbuntuでマウントしたWindowsパーティションは「/media/<パーティション名>/」というパスになります。Linuxではファイル名などの大文字小文字が別のものとして判別されてしまいますのでご注意下さい。
例えば、Windowsの
 C:\/Poserdata/Runtime/Textures/Mytexture.jpg
というパスが、Ubuntuからは
 /media/ボリューム/Poserdata/Runtime/Textures/Mytexture.jpg
となったりします。
※テクスチャがたくさんのランタイムから使われている場合は、いっそテクスチャフォルダを全てUbuntuのパーティションへコピーしてしまうのが簡単かもしれません。

(7)lxsファイルをgeditなどのテキストエディタで開き、
"string filename"
のパスも書き換えます。(3)の通りだと
 /home/<ユーザー名>/Reality/
というパスになりますね。

(8)LuxRenderを起動して、(3)のファイルをOpenしてレンダリングを開始します。

この方法を使えば、アプリケーションのメモリ2GB制限から解放されるために、結構複雑なシーンでもレンダリングできるようになります。
しかし、この方法で一番のネックになるのが、シーンを調整するのにはWindowsへ戻らなくてはいけないという所です。いちいちPCを再起動するのにはちょっと大変ですよね。
LuxRenderのメモリを圧迫する一番の原因はテクスチャの解像度です。そこで、Windows側では低解像度のテクスチャを用意して使い、Ubuntuでテクスチャのパスを書き変える際に高解像度のテクスチャへ変えてしまう、というのはどうでしょうか?
64bitのWindows7などを購入するのが一番なんですけどね。

とりあえず、同じシーンをレンダリングした時の速度を比較してみました。

 WindowsXP 32bit : 53156S/s
 Ubuntu10.04 64bit : 67311S/s

※同じマシンでOSを変更した環境での比較です。
64bit効果かOSの差かはわかりませんが、かなりの速度アップができています!



今回のツールと画像の素材はこちら

Reality 4 - DAZ Studio Edition


Angel for V4

V4 Ranger

Ranger Hair: Color and Movement

AD Fighting Fae Armor for V4
Fighting Fae Armor for V4




Comment

Cloud

 私はこういう用途ならば、クラウドを利用するのが現実的な解であろうと思います。Google App EngineはIaaSではなくPaaSなので使えませんが、Amazon EC2やWindows Azureなら実現可能です。というのも、使用するCPU時間は知れてますし処理データ>転送データ量なのでクラウドの難点である転送データ量の料金を削減できます。
 しかも、プランさえ過たなければそれ相応のスペックのマシンを用意できますし。必要がなくなればインスタンスごと廃棄して課金対象から外せますしね。あと、マシンのコンフィグレーションが限られているのでパフォーマンスをたたき出すためのチューニングもしやすいですし。

Re: Cloud

G.O.R.Nさんはじめまして、ご訪問ありがとうございます。
なるほど、レンダリングにクラウドサービスを使うのはアリですね。
企業ではCGアニメーション作品をクラウドでレンダリングしている例もあるようですし、コストさえ許せばかなりの時間短縮になるのは容易に想像できますね。

検索してみたら、日本人で既にDAZ Studio + Realityプラグイン + LuxRenderでAmazon EC2を利用したクラウドレンダリングの手順を紹介してくださっている方がいらっしゃったのでビックリしました。
http://amarijun.wordpress.com/2010/10/13/daz-studio-luxrender%E3%81%A7%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0/
Reality 2.0になってLuxRenderでアニメーションをレンダリングするようになったら、クラウドサービスくらいのものを使わないと厳しそうですね。
非公開コメント

著書
カレンダー
02 | 2023/03 | 04
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
検索フォーム
プロフィール

Kotozone

Author:Kotozone
製品の取扱説明書を読むのが大好きです

FC2ブックマーク
最新記事
カテゴリ
タグリスト

DSプラグイン V4 ライト マテリアル DSシェーダ DS基本 セール Genesis IBL アニメーション タブ解説 iray ダイナミッククロス LuxRender スクリプト Genesis2 バージョンアップ セットアップ ShaderMixer レタッチ Download カスタマイズ トゥーン SSS Photoshop NGM 物理シミュレーション ファー ウェイトマップ D-Form ERC Miki2 IDL M4 大気 Terrain カラーコレクション モーフセット ボリューム パーティクル Genesis8 Hexagon Genesis3 V5 アナグリフ カメラ インスタンス K4 Python 日本語訳 ロボット RAMDisk ダイナミックヘア Linux V8 3Dプリント GIMP SLG モーションキャプチャ 

最新コメント
リンク
月別アーカイブ
ご意見ご感想はこちらに

名前:
メール: 
件名:
本文: 

ブロとも申請フォーム

この人とブロともになる

最新トラックバック
FC2カウンター