Houdini 18.0 タスクを実行する方法

PDGとレンダーファームスケジューラの統合

異なるスケジューラを使って、ワークのスケジュールを組んで実行する方法。

On this page

概要

ネットワークを走らせる際にあなたが指定したワークを実際に処理させるには、 何か が、実行準備の整ったコマンドを受け取って、その実行環境を構築して、それらのコマンドを実行しなければなりません。 TOPネットワークでは、この 何かスケジューラ ノードに相当します。

TOPネットワーク内に2個以上のスケジューラノードを配置することができますが、そのネットワークをクックするスケジューラは、TOP Networkノードで指定します。

TOPネットワーク内に複数のスケジューラを配置することで、異なる"プロファイル"をセットアップして、スケジューラ間でそれを切り替えることができます(例えば、小規模なテストをする時にはローカルスケジューラを使用し、プロダクションでフル稼働させる時にはレンダーファームスケジューラに切り替えることができます)。

特定のノードで使用するスケジューラをオーバーライドすることができます。 これによって、ローカルで軽いジョブを実行してファイルシステムの修正を行なうことができるので、ファームにそれらのジョブを送信するオーバーヘッドの負荷を回避することができます(さらに、一部のノードをまったくスケジュールに組ませずにメインプロセスでワークを処理するためのオプションがあります)。 他にも、スケジューラノードは特定のトップレベルのジョブパラメータをオーバーライドすることもできます。

新しいTOPネットワークに対してデフォルトのスケジューラノードは、プロセスキューを使ってワークのスケジュールを組みます。 作業負荷によりますが、これによってオーバーヘッドが小さくなるため、実際にレンダーファームを使用するよりも高速化することができます。

すぐに使えるように、TOPsにはいくつかのレンダーファームパッケージ用のビルトインのスケジューラノードが用意されています(以下参照)。

TOPsは、制御マシンとすべてのサーバーがネットワークファイルシステムを共有している場所で分散されたセットアップのみを扱います。

スケジューラのタイプ

Local Scheduler

デフォルトのスケジューラ:ローカルマシン上のプロセスキューを使って、ワークのスケジュールを組みます。

HQueue Scheduler

これはHoudiniの無料の管理ソフトウェアで、小規模なレンダーファームに適しています。 HQueueのインストール方法を参照してください。

Deadline Scheduler

Thinkboxソフトウェア社の計算管理ツールキットです。

Tractor scheduler

Pixar社のレンダー管理ソフトウェアです。

カスタムスケジューラ

カスタムスケジューラのバインドを使用することで、他のサードパーティ製または内製のソフトウェアと統合させることができます。

スケジューラのオーバーライド(上書き)

To...Do this

単一ノードで使用するスケジューラをオーバーライドする

  1. オーバーライドしたいスケジューラのノードを選択します。

  2. パラメータエディタで、 Schedulers タブをクリックします。

  3. TOP Scheduler Path に、使用したいスケジューラノードのノードパスを設定します。

    たいていの場合、TOP Networkノードは(サブネットを使わずに)トップレベルで全体を定義するので、TOP Networkノードはスケジューラノードと同じレベルにいるようなものです。 その場合、スケジューラの相対パスは、local_schedulerといったスケジューラノードの名前だけになります。

    別の方法として、フィールドの隣にあるノード選択アイコンをクリックすることで、インタラクティブにスケジューラノードを選択することができます。 この方法だと、スケジューラの絶対パスが入ります。

TOP Networkノードで指定されたデフォルトのスケジューラを使用するようにノードの設定を戻すには、このノードの TOP Scheduler Path フィールドを空っぽに設定してください。

Scheduler Job Parms / Properties

To...Do this

単一ノードのジョブ実行パラメータをオーバーライドする

スケジューラには、スケジュールの組み方とコマンドの実行方法に関する個々のパラメータがあります。それらの設定の一部をノード単位でオーバーライドすることができます。TOPs uses the properties system to override scheduler settings.

  1. Right click the node whose scheduler you want to override and select Parameters and Channels > Edit Parameter Interface.

  2. In the Edit Parameter Interface window, select Node Properties.

  3. Navigate to the Scheduler Properties folder. This folder contains sub-folders for each built-in scheduler as well as any custom schedulers. Each sub-folder contains all of the available properties for that scheduler.

  4. Drag any scheduler properties that you want to override into the node’s interface. Once a scheduler property has been added to the node’s interface, it will now override the value specified on the scheduler node. Note that the override will only apply when that scheduler is the one cooking this node.

ローカルスケジューラのリソースを制限する方法

You can change the limit on the number of compute resources available to the Local Scheduler node (the default limit is the number of cores in the local computer).

  • Both HQueue and the Local Scheduler have a concept of how many "CPUs / slots" (an abstract unit) a job requires, and a maximum number of slots on a machine to use to run jobs simultaneously.

  • For example, if a certain job is itself multi-processing or multi-threaded, using four cores, you can mark that job as requiring 4 slots. The Local Scheduler or HQueue Scheduler will then only schedule the job if the machine has at least 4 "free" slots below the maximum limit.

  • To specify the number of slots the jobs generated by a TOP node require:

    1. Select the TOP node.

    2. In the parameter editor, open the Gear menu and choose Edit Rendering Parameters.

    3. Select the Node Properties tab in the pane on the left.

    4. In the Scheduler Properties tree folder are all the overridable properties for each type of scheduler, select Slots Per Work Item below the Local folder.

    5. Drag that block of properties into the Schedulers folder in the left pane of the window. This will install those properties onto the TOP node.

    6. Dismiss the window, then toggle on Slots Per Work Item and set the number of slots to assign.

    Note

    You can create an expression on this parameter if you want to vary it’s value based on work item attributes.

  • The Local Scheduler’s Total Slots lets you specify the maximum number of slots the TOPs is allowed to use simultaneously while cooking.

  • HQueue CPUs per Job lets you specify per-machine CPU limits.

(Future versions may allow limits on other resource types, such as databases, similar to HQueue.)

ワークアイテムのオーバーヘッドを削減する方法

別々のプロセスでオペレーションを開始させるのも、ファーム上でワークのスケジュールを組むのも、ネットワークファイルシステム上にデータを移すのも、どれもこれもTOP内での作業でオーバーヘッド(余計な負荷)が発生します。 一部のノードには、TOPグラフをクックしているプロセス内で小さいジョブを行なうためのオプションがあり、ファーム上でそれらの小さいジョブのスケジュールを組まずに、同じマシン上でそれらのジョブを実行できるようにそれらの小さなワークアイテムをオーバーライドすることができます。

しかし、HDA Processorノードをローカルで実行させた場合でさえも、そのアセットがすぐにクックを完了するようであれば、それを別々のプロセスで実行させるオーバーヘッドは、パフォーマンス全体に影響を与えてしまいます。 このオーバーヘッドを最適化または回避するために、あなたができる事がいくつかあります:

  • HDA Processorノードの代わりにROP Geometryノードを使ってジオメトリを生成し、時間/フレーム番号を使ってWedgeを行なってください。

    同じHIPファイル内に、アセットをTOP Networkとしてインスタンス化して、SOPネットワークのROP Geometryノードを指定します。 そのROP Geometryノードの ROP Fetch タブにある All Frames in One Batch を有効にします。 これによって、1度に1フレームで全フレーム範囲をクックする単一プロセスが作成されます。通常では、これはシミュレーションで使用しますが、軽量なジオメトリのジョブの効率性を上げる際にもよく使用します。

    特定のバッチサイズで試すこともできます。例えば、 All Frames in One Batch の代わりに、1バッチで20フレームを使用するようにすることができます。

  • 可能であれば、HDA Processorノードの代わりにInvokeノードを試してみるのも良いでしょう。Invokeノードは、独自のプロセス内ではなく、TOPグラフをクックしているプロセス内でSOPチェーンをクックします。このInvokeノードの制限事項は、コンパイルブロックでしか使用できないことです。小さい/すぐに処理が終わるようなオペレーションでは、この方が 非常に 効率的です。

  • Local Schedulerノードで、ローカルマシンのプロセスの数を上げることができます。デフォルトの最大プロセス数は、ローカルマシンが低速にならないように非常に低く設定(コア数/4)されていますが、小さなジョブがローカルで実行されるようにオーバーライドする場合には、おそらく、この数をコア数まで上げた方が良いでしょう。

See also

タスクを実行する方法

基本

次のステップ

  • 外部のプログラムを実行する方法

    TOPノードで外部機能をラップする方法。

  • ファイルタグ

    ワークアイテムは、そのワークによって生成された"結果"を追跡します。各結果には、そのタイプのタグが付きます。

  • フィードバックループ

    For-Eachブロックを使用することで、ワークアイテムに対して一連のオペレーションをループで処理することができます。

  • コマンドサーバー

    コマンドブロックは、リモートプロセス(例えば、HoudiniやMayaのインスタンス)を起動したり、サーバーコマンドを送信したり、サーバーをシャットダウンすることができます。

  • PDG Service Manager

    PDG Service Managerは、ワークアイテムのクック時間を短くするために使用される持続型Houdiniセッションのプールを管理します。

  • PDGとレンダーファームスケジューラの統合

    異なるスケジューラを使って、ワークのスケジュールを組んで実行する方法。

  • ワークアイテムのパフォーマンスの可視化

    ネットワーク内のワークアイテムの相対的なクック時間(またはファイル出力サイズ)を可視化する方法。

  • Event Handling

    PDGノードまたはグラフからイベントを制御するためのPython関数を登録することができます。

  • Tipsとテクニック

    TOPsを扱う上で役立つ一般情報と上手な使い方。

リファレンス

  • すべてのTOPsノード

    TOPノードは、データをネットワークに送り込んで"ワークアイテム"に変換し、色々なノードでそれを制御するワークフローを定義します。たいていのノードは、ローカルマシンまたはサーバーファーム上で実行可能な外部プロセスを表現しています。

  • Processor Node Callbacks

    Processor系ノードはスケジューラで実行可能なワークアイテムを生成します。

  • Partitioner Node Callbacks

    Partitioner系ノードは複数の上流ワークアイテムを単一パーティションにグループ化します。

  • Scheduler Node Callbacks

    Scheduler系ノードはワークアイテムを実行します。

  • Python API

    ディペンデンシーグラフを扱うためのPython PDGパッケージのクラスと関数。