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 生成文件的一个限制是您不能在您传递的辐射射线中进行这种动态分配。

对于我们的应用程序,我们必须改为使用一个具有最大大小的数组和一个指定当前运行长度的 uint。我知道这很浪费内存,但我看不出有什么办法。

您将希望为您的应用程序和硬件设置最大大小,因为在这种情况下可能会推送堆栈大小。

于 2012-08-31T13:10:21.067 回答