02 Compile test:case 02
前項とはセッティングを変えて検証していきます。この検証では、Compileがもつ本来の性能を発揮するためのセッティングにしています。まず、前項ではFeedback Each IterationでそれぞれのIterationをFeedbackしてForを演算していたため、並列処理はできませんでした。Compileは本来並列処理に特化した機能なので、非常にもったいない使用法と言えます。ただ、メモリに関してはかなり消費を抑えられているため、それもまたひとつのアプローチといって良いでしょう。
ここでは、Copy to Points SOP【A】を用いて、PointにSubdivideとDeform【B】をかけたジオメトリをコピーしますが【1】、このとき、あえてPointごとに処理をします。あまりこういう機会はありませんが、性能を引き出すために、意図的に処理の負荷を上げるようにします。このとき、Block Begin SOPを2つ用意し、どちらがBlock End SOP【C】のIterationにつながるかを設定します。今回はPointそれぞれに対して処理をするため、Iteration MethodをBy Pieces or Pointsに、Gather MethodをMerge Each Iterationに設定します【2】。
Point側のBlock Begin SOP【D】ではMethodをFetch Piece or Point【3】に設定し、コピーする側【E】ではFetch Input【4】に設定します。その結果が下図の【5】となります。
続いて、Compileを設定する際に、Block Begin Compile SOPをForに合わせて2つ用意します【F】。また、このとき並列処理を可能とするため、Block End SOPのMultithread when Compiledにチェックを入れてアクティブにします【6】。
その結果が下図【7】となります。全体のメモリ使用が若干上がっていますが、Cookingの処理速度が大幅に向上しているのがわかります。このように、それぞれのIterationを並列処理できるシチュエーションでは、かなりの速度向上が見られました。