On this page | |
Since | 17.5 |
概要 ¶
TOPs Feedback Loopブロックは、一連の 直列による実行 工程を 何回も 実行することができます。
TOPネットワークは既に並列ループのような挙動をしています。 というのも、TOPネットワークはスケジューラの設定に基づいて可能な限り同時にたくさんのワークアイテムを実行します。 つまり、“入力別に同じアクションを繰り返す”挙動はTOPネットワークの挙動そのものなので、通常ではループを構築する必要がありません。
場合によっては並列ではなく直列に一連の工程を実行して、前のワークアイテムの出力をそれ以降のワークアイテムの入力として使用したいことがあります。 単純なシミュレーションなら、このような処理は既にROP Fetchノードを使えば制御することができます。このROP Fetchは同時に1ジョブ1フレームとして実行するバッチを生成することができます。
複数のノードが絡んだループまたはループさせる回数がまだわからないといったもっと複雑な使い方になると、 フィードバックループ を使用した方が良いです。
フィードバックループのブロック内では、TOPネットワークはノード毎にワークアイテムを実行するのですが、下流のワークアイテムが上流のワークアイテムに依存した状態で、それらのワークアイテムを直列に実行します。 そして、1回目のループですべてのワークを完了させた時に、そのブロックに2回以上のループ回数が指定されていれば、Beginノードに戻って次のループに進みます。
Tip
設定によっては、フィードバックループのブロックは、並列で 複数の直列ループ を実行する こともできます 。
例えば、1回ずつ一握りのビー玉を瓶に詰めていくRBDシミュレーションを実行するとします。 この処理全体を単一シミュレーションで実行することができますが、瓶の底に積み上がっていくビー玉は安定せず、次々にシミュレーションされるオブジェクトの数が増え続けていきます。 これを管理する1つの方法は、1回目に詰める一握りのビー玉に対してRBDシミュレーションを実行し、その結果を2回目のシミュレーションの静的オブジェクトとして使用することです。 3回目のシミュレーションでは、1回目と2回目のシミュレーションの結果を合わせたビー玉を静的オブジェクトとして使用します。それ以降のシミュレーションも同様です。 TOPsでは、ROP GeometryとFeedback Loopをループブロック内で使用することで、このような処理が可能になります。
(Feedback Loopはサービスブロックの実装でも使用します。その場合、ワークアイテムはサービスプロセスに割り当てられ、深さ優先順で順々に実行されます。)
Tipsとメモ ¶
-
フィードバックループにはどのプロセッサノードも使用することができます。現在のところ、フィードバックループ内では動的なパーティショナーを使用することは できません 。パーティションに同じループ回数目からのワークアイテムのみを含める場合であれば、 静的な パーティショナーを使用することが できます 。別のループ回数目のワークアイテムを無理やりパーティション化すると、そのパーティションノードはエラーを報告します。
-
ブロックのBeginノードとEndノードは、その関係性をわかりやすくするために同じカラーを設定してください。For-Loopツールで配置されたデフォルトのノードのカラーはオレンジですが、そのノードのカラーを変更することができます。これは、入れ子化したループと区別するのに役立ちます。
ブロックを囲んだ境界は、Endノードのカラーと同じになります。
-
Beginノードは、ループさせるワークアイテムを生成するプロセッサです。
-
各ワークアイテムは、同じループの前のワークアイテムに依存し、その反復回数とループ番号を識別するためのアトリビュートを持っています。
Block End Feedbackノードは、関係しているループの反復に基づいてワークアイテムをパーティション化するパーティショナーです。 フィードバックループ内のノードは自由に必要な数だけワークアイテムを追加していくので、パーティショナーはそれらのワークアイテムを収集することができて便利です。 Beginノード内の2回目のループのワークアイテムは、1回目のループのパーティションに依存します。それ以降のループも同様です。 ループが動的にワークアイテムを生成する場合、そのBlock End Feedbackノードの Use Dynamic Partitioning も有効にしなければなりません。
-
フィードバックブロック外のノードを、フィードブロック内の複数入力を持ったノードに接続することができます。
Tip
$HH/help/files/pdg_examples/top_feedbackhda
と$HH/help/files/pdg_examples/top_feedbacksim
のサンプルでは、このノードを使用して、前のループの出力に基づいてジオメトリをクックする方法について説明しています。
TOP Attributes ¶
以下のアトリビュートの名前は、このノードのパラメータを使って設定することができます。
|
[int] |
ループの反復回数。入れ子のフィードバックループを使用する時は、レベル毎に反復回数を指定したいので、このアトリビュートには配列値を指定することができます。
一番外側のループのループ反復値は |
|
int |
ワークアイテムがどのループに関連しているのかを追跡します。 このアトリビュートは、同じFeedback Beginノード内で複数の独立したループを生成させる時に関係します。 例えば、Wedgeノードを使ってFeedback Beginノードを駆動させる時です。 |
|
int |
現行ループの合計の反復回数。 |
Tip
ループを入れ子にした場合、配列を扱わなくて済むように、loopiter
/loopsize
アトリビュートの名前にレベル毎に異なる名前を付けても構いません。
パラメータ ¶
Generate When
このノードがワークアイテムを生成するタイミングを決めます。 このノードがどの生成モードを必須にしているのか、もしくは、ワークアイテムを動的に生成させる必要があるのかどうか分からないのであれば、通常では、これを“Automatic”のままに設定してください。
All Upstream Items are Generated
このノードは、すべての入力ノードが自身のワークアイテムを生成した時にワークアイテムを生成します。
All Upstream Items are Cooked
このノードは、すべての入力ノードが自身のワークアイテムをクックした時にワークアイテムを生成します。
Each Upstream Item is Cooked
このノードは、入力ノード内のワークアイテムがクックされる度にワークアイテムを生成します。
Automatic
入力ノードの生成モードに基づいて生成モードが選択されます。 入力ノードのどれかがその入力のクック時にワークアイテムが生成されている場合、このノードには Each Upstream Item is Cooked が設定されます。 そうでない場合、 All Upstream Items are Generated が設定されます。
Iterations from Upstream Items
Iterations パラメータの代わりに入力の静的なワークアイテムの数に基づいて反復回数を設定します。
Iterations
Beginノードに上流のワークアイテムが存在すれば、入力のワークアイテム毎に、ここで指定した回数だけループが実行されます。
Copy Inputs For
入力ファイルをループアイテムにコピーさせる方法を決定します。 デフォルトでは、上流のファイルがすべての入力ファイルにコピーされますが、1回目のループ だけ 入力ファイルをコピーすることも何もコピーしないこともできます。
No Iterations
上流の入力ファイルをどのループ反復アイテムの出力にもコピー しません 。
First Iteration
上流の入力ファイルを1回目のループ のみ の出力ファイルリストにコピーします。
All Iterations
上流の入力ファイルをすべてのループの出力ファイルリストにコピーします。
Cook Loops Sequentially
このトグルを有効にすると、このノードで作成されたループは、1度に1ループで順々に完了させてクックします。 このトグルを無効にすると、独立したループは並列でクックすることができます。
Feedback Attributes
有効にすると、各反復の終了時点における指定されたアトリビュートが、次の反復の開始時点での該当するワークアイテム上にコピーされます。 これは、ワークアイテムが次の反復のクックを開始する直前に行なわれます。
Tip
フィードバックさせたいアトリビュート(s)は、スペース区切りのリストまたはアトリビュートパターン構文を使用して指定することができます。 アトリビュートパターンの記述の方法の詳細は、アトリビュートパターン構文を参照してください。
Feedback Output Files
有効にすると、各反復の出力ファイルが次のループの反復の開始時点での該当するワークアイテム上にコピーされます。 これらのファイルはそのワークアイテムの出力として追加されるので、ループ内のワークアイテムの入力として利用可能になります。
以下のパラメータを使用することで、このノードで生成されるワークアイテムアトリビュートの名前をカスタマイズすることができます。
Iteration
ワークアイテムの反復回数を含んだアトリビュートの名前。
Number of Iterations
反復回数の合計数を含んだアトリビュートの名前。
Loop Number
ループ回数を格納するアトリビュートの名前。
Examples ¶
FeedbackBegin Example for Block Begin Feedback TOP node
このサンプルでは、フィードバックループの作り方を説明しています。
FeedbackModes Example for Block Begin Feedback TOP node
このサンプルでは、フィードバック開始ループの反復に対して上流ファイルをコピーする色々な方法を説明しています。
See also |