| On this page |
Karma XPUでビューポートレンダリングを開始すると、OptiXデバイスが短時間停止することがよくあります。 この遅延の原因は、レンダラーがGPU上で実行するプログラムをコンパイルするからです。 ビューポートの右上コーナーには、それに該当するメッセージが表示されます。
Karma XPUは、以下の2つの基本的なタイプのプログラムを区別します:
レンダーカーネルは、XPUの中核となるレンダリングコードであり、レンダリング処理に不可欠です。 このコードは、シーンの要件に応じて変化し、コンパイルするのに数秒から数分かかることがあります。 一度コンパイルが済むとキャッシュ化されるため、同じ(または類似の)シーンを再ロードすると、そのキャッシュ化された結果が使用されるので、レンダリングが即座に開始されます。 しかし、長い初期待ち時間を避けるために、カーネルを事前コンパイルすることができます。 この機能はHoudini21で導入されました。
レンダーカーネルの事前コンパイル:
-
完全に任意 であり、Karma XPUの機能や動作モードには影響しません。
-
OptiXデバイスのみを最適化します(EmbreeCPUデバイスは恩恵を受けません)。
-
Karma CPUには 必要ありません 。
Note
事前コンパイルできるのは、レンダーカーネルのみです。 ユーザシェーダは、そのノードグラフの配置を予測することができないため、事前コンパイルすることはできません。 幸いなことに、ユーザシェーダは通常、レンダーカーネルよりもはるかに速くコンパイルされるため、パフォーマンス上の大きな問題にはなりません。
Houdiniを新規インストールしてから初回にSolaris LOPノードを作成すると、メッセージが表示されます。 このメッセージは、カーネルを事前コンパイルすることを示唆しています。 今後このメッセージを表示したくない場合は、適切なボタンをクリックしてください。 カーネルを事前コンパイルしたい場合は、そのメッセージが表示された時に事前コンパイルする必要はなくて、いつでもこの処理を開始することができます。 それは、Houdiniのメインメニューの Render ドロップダウンメニューに Pre-compile Karma XPU Render Kernels エントリがあります。
カーネルをコンパイルする前に現在の作業を保存し、できるだけ多くのコンピュータリソースを解放することを推奨します。 一部のユーザからコンパイル中にコンピュータの動作が遅くなったり、応答しなくなったりしたという報告がありました。 事前コンパイルを開始したら、ウィンドウでその進捗を監視することができます。
この処理を中断して後で再開することもできます。 この処理全体には数時間かかることがありますが、実際の所要時間はシステムの仕様に大きく依存します。
事前コンパイル ¶
カーネルの再コンパイルが必要になる場面がいくつかあります。 例えば、Houdiniを新規インストールした時や、GPUドライバのアップデート後などです。 レンダリング時に、キャッシュを更新するタイミングであることを知らせるビューポートメッセージが表示されます。
無効なキャッシュは、レンダリング品質には影響しませんが、Karma XPUはその場で不足しているカーネルをコンパイルします。 この場合、再び待ち時間が必要になります。
キャッシュの場所 ¶
キャッシュは、数ギガバイトのディスク容量を使用する可能性があり、Houdiniのメジャーリリース毎に別々に保存されます。 これを削除してcompile-as-you-go(コンパイルしてすぐに実行できる)モードに戻すには、以下の場所にある呼応するHoudiniディレクトリを削除してください。
Windowsユーザの場合、Houdini21.0キャッシュはここに格納されます:C:\Users\USERNAME\AppData\Local\NVIDIA\OptixCache\Houdini21.0
Linuxユーザの場合は、ここに格納されます:/var/tmp/OptixCache_USERNAME/Houdini21.0
ネットワークとファーム ¶
カーネルを一元的に、例えばネットワークドライブに保存し、キャッシュを共有することで、マシン毎にカーネルを再コンパイルするのを避けようと考えている方もいらっしゃるかもしれません。 カーネルは非常に特殊なシステムやGPUの仕様に合わせてコンパイルされているため、そう簡単に共有することはできません。 私たちはこれを 推奨しません 。
ファームマシンでは、カーネルを事前コンパイルする必要はありません。その理由は以下の通りです:
-
ファームマシンは必要に応じてシェーダ/カーネルをコンパイルします。
-
事前コンパイルは主にインタラクティブな操作を向上させるためにあります(ファームマシンには必要ありません)。