5

optix で動的サイズの配列ペイロードを宣言する方法はありますか? Optix のドキュメントをググって読みましたが、Optix では malloc の使用が許可されていないことがわかりました。次のようなことができる方法はありますか?

struct PerRayData_radiance
{
 float3 result;
 float  importance;
 int depth;
 float stuff[N];
};

一部のユーザーパラメーターに応じて、配列のサイズを N に変更しました。

NVIDIA フォーラムで過去の質問を検索してみましたが、セキュリティ上の問題により閉鎖されたようです。

4

1 に答える 1

4

できません。自分のアプリケーションでこれをやりたかったので、NVIDIA OptiX フォーラムがあったときに、まさにこの質問をしました (http ポインターを提供できればいいのにと思います)。残念ながら、OptiX で使用される ptx 生成ファイルの制約の 1 つは、通過する放射光線でこの種の動的割り当てを行うことができないことです。

このアプリケーションでは、代わりに最大サイズの配列と現在の実行の長さを指定する uint を使用する必要があります。メモリが無駄なのはわかっていますが、それを回避する方法がわかりません。

この状況ではスタック サイズがプッシュされる可能性が高いため、アプリケーションとハードウェアの最大サイズを試してみる必要があります。

于 2012-08-31T13:10:21.067 に答える