Forループで並列処理されない場合


どうも篠島です。Forループはコンパイルブロック内に入れることで並列処理されると書きましたが、出来ない場合もあるので要注意です。

 

Forループの記事でForループには2種類あると書きました。ピース毎、ポイント毎、プリミティブ毎に処理する For-Each Loop と、一定回数ループする For Loop がタブメニューから呼べますね。

 

ここで、普通の For Loop、すなわち Block End SOP の Gather Method が Feedback Each Iteration になっている場合は、コンパイルブロック内に入れて Multithread when Compiled を ON にしても並列処理はされません。例えば下のような球体にノイズを100回かけるループがあるとします。100回目に適用するノイズは、99回目の結果が分からないと処理できないし、99回目の処理は98回目の結果がないと処理できない・・・という感じです。なので、ループの最初から順番に処理していくしか無いということで並列処理がされないので気をつけましょう。