Geolib3-MTの構成

Geolib3-MTは、 RenderSettingsノード。すべてのGeolib3-MTオプションは、 sceneTraversal見出し。

sceneTraversalパラメーター

maxCores

テキストフィールド

デフォルト:0

シーントラバーサルフェーズ中にGeolib3-MTが使用する論理コアの数を決定します。

以前のバージョンとは異なり、Geolib3-MTは内部スレッドプールを使用してシーンの横断時間を改善します。次の図は、Geolib3-MTと以前のバージョンの違いを示していますKatana

デフォルト値の0では、Geolib3-MTはホストコンピューターで使用可能なすべての論理コアを使用します。

注意:  コアの数が増えると、コアGeolib3-MT処理エンジンはスケーリングしますが、Opツリー内の個々のOpsは同じスケーリング特性を示さない場合があります。スレッドを増やすと、シーンの横断時間が長くなる可能性があります。この場合、新しいプロファイリングツールはKatana 3.5を使用して、これらのOpを識別し、動作を最適化できます。マークされたOpsにも同じことが当てはまりますthread unsafe、これらの取得が必要なためGlobal Execution LockGEL)、シーントラバーサルのスケーラビリティをさらに制限します。

opTreeOptimizations

チェックボックス

デフォルト:オフ

オンにすると、Geolib3-MTは前処理ステップを実行し、Opツリーのトポロジを調べて、潜在的に最適化できるコンストラクトを特定します。1つの最適化は、同じタイプのOpのシーケンスをそのOpの単一インスタンスに折りたたむことです。これには多くの利点があります。

  • 関数呼び出しのオーバーヘッドの削減-シーングラフの場所をクックするためのOpのスケジューリングにかかるコストはわずかです。同様のOpsのチェーンを組み合わせることにより、この関数呼び出しのオーバーヘッドを削減できます。
  • メモリフットプリントの削減-10 Opsのチェーンは、キャッシュサブシステムで10個の個別のクック結果を占有しますが、正常に折りたたまれたOp Chainは、場所ごとに1つのクック結果しか占有しません。

最下流のOpから観察したとき、Opsの崩壊したチェーンを評価した結果は、Opsのチェーンが評価された場合と同じになるはずです。

注意:  次のようなアップストリームシーングラフの結果を照会するOp API呼び出しgetAttr()、チェーン内のそれらのOpの1つがその属性の設定を担当した場合、折りたたみチェーン内で呼び出されたときに期待される結果を返しません。この場合、OpはgetOutputAttr()代わりに。

Opツリーオプティマイザーは、同じタイプのOpの連鎖を呼び出しますGeolibSetupInterface::setOpsCollapsible()間にsetup()コール。この関数の呼び出し元は、Geolib3がOpに渡す属性の名前を指定する必要がありますcook() Op引数として呼び出します。この属性には、折りたたまれたOpsの引数を含む属性の順序付き配列(上流のOpから下流のOpに順序付けられた)が含まれます。その後、OpはこのバッチOp引数を適切に処理できます。

verboseLogging

チェックボックス

デフォルト:オフ

オンにすると、Geolib3-MTランタイム内の詳細ログが有効になります。これには、シーントラバーサル中の詳細なログ記録と、有効になっている場合はOpツリーの最適化が含まれます。

sceneTraversal.cacheパラメーター

Geolib3-MTには、キャッシュサブシステムの動作を制御する多くの設定が含まれています。キャッシングサブシステムは、以前に調理されたシーングラフの場所の保存と取得を担当します。 cook results。これらの設定は、 RenderSettingsプロジェクトごとのノード。

キャッシング、およびメモリ使用量と最初のピクセルまでの時間のトレードオフは、シーントラバーサル時間とレンダリングのパフォーマンスに大きな影響を与える可能性があります。Geolib3-MTが提供する設定を使用すると、レンダリングのシーントラバースフェーズ中にメモリフットプリントを調整することができます。

cacheEviction

チェックボックス

デフォルト:オン

オフにすると、クック結果はキャッシュから削除されません。

ヒント:  最初はキャッシュエビクションを無効にすることは直感に反するように思えるかもしれませんが、適切な場面があるかもしれません。これは、レンダラーが必要とするシーンとデータ構造がメモリに快適に収まる場合です。レンダリングのシーン生成フェーズが完了すると、Geolib3-MTのクック結果で占有されているメモリページにアクセスできなくなるため、ディスクへのページングの対象とはなりません。これらのページはレンダリング中にメインメモリに再ページされないため、パフォーマンスの低下は最小限です。

cacheSoftLimit

テキストフィールド

デフォルト:1,048,576

もしcacheEvictionオンになっている、 cacheSoftLimit使用頻度が最も低いエビクションポリシーを使用してエントリがエビクトされる前に、ローカルキャッシュに保存されるクック結果の数を管理します。

注意:  これらのエントリはローカルキャッシュから削除される可能性がありますが、他の多くのローカルキャッシュまたはセントラル(共有キャッシュ)間で共有される場合があります。その場合、エントリのメモリはすぐには再利用されません。

シーングラフとOpツリーの最大深度を考慮してください。のcacheSoftLimitスレッドごとに最近使用したクック結果キャッシュのサイズを制御します。これは、特定のスレッドで調理された場所、または調理プロセス中にアクセスされた場所(経由など)を意味しますgetAttr())、ローカルキャッシュに保存され、の値に基づいてエビクションの対象となりますcacheSoftLimit

collectionFrequency

テキストフィールド

デフォルト:10,000

もしcacheEvictionオンになっている、 collectionFrequency収集サイクル間の時間をミリ秒単位で管理します。収集サイクル中に、Geolib3-MTは前回の収集サイクル以降に削除されたすべてのキャッシュエントリを収集し、クック結果が使用されなくなった場合、クック結果のメモリを削除して再利用します。

注意:  を減らすcollectionFrequency intervalは、クック結果のより積極的な追い出しを引き起こし、メモリフットプリントを削減しますが、シーンの走査時間を犠牲にする可能性があります。

useCachePrepopulation

チェックボックス

デフォルト:オン

オンにすると、Geolib3-MTは、内部キャッシュに入力されるシーングラフの走査を実行します。

このトラバースの範囲は、以下の設定によって制御できます。 sceneTraversal.cachePrepopulation

sceneTraversal.cachePrepopulationパラメーター

preCookSourceOps

チェックボックス

デフォルト:オフ

オンにすると、Geolib3-MTはまず、Opツリーで見つかったソースOp(入力のないOp)によって生成されたシーンを完全に走査します。この設定は、ジオメトリキャッシュまたは他のアセットタイプでロードするときに利点を提供できます。

注意:  経験的なテストにより、ソースOpsの後には何らかの形のプルーン操作が続くことがわかっています。その結果、これらの場合、オンになりますpreCookSourceOps必要以上に多くのシーングラフの場所を生成できるため、メモリ消費と走査時間が増加する可能性があります。

preCookKeyOps

チェックボックス

デフォルト:オン

オンにすると、Geolib3-MTは、並行して評価できるOpツリー内のOpsを識別します。

この例はMerge Op:

Geolib3-MTは各ブランチを並行して評価するため、シーンの横断時間を短縮できます。

preCookAllLocations

チェックボックス

デフォルト:オン

オンにすると、Geolib3-MTは残りのすべてのシーングラフの場所をクックし、シーンを完全に拡張します。

上記の設定の値に基づいて、 cachePrepopulationフェーズでは、Geolib3-MTキャッシュにはシーングラフ全体またはそのサブセクションが事前に入力されています。Geolib3-MTは最適化されており、既存のFnScenegraphIteratorこのキャッシュのAPI。このキャッシュは、スケーラブルでスレッドセーフなキャッシュであるため、レンダラープラグインがこのキャッシュに同時にアクセスして、シーンビルドフェーズのパフォーマンスを向上させることをお勧めします。

警告:  Geolib3-MTキャッシュが完全に読み込まれていない場合、キャッシュアクセス(経由FnScenegraphIterator)キャッシュミスが発生します。この場合、要求された場所は呼び出しスレッドを使用してクックされます。