【问题标题】:Optix dynamicly sized array in payload有效载荷中的 Optix 动态大小的数组
【发布时间】:2012-08-30 21:43:23
【问题描述】:

有没有办法在 optix 中声明一个动态大小的数组有效负载?我搜索并阅读了 Optix 文档,却发现 Optix 不允许使用 malloc。有什么办法可以做以下事情吗?

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

我是否根据某些用户参数将数组的大小调整为 N。

我尝试在 NVIDIA 论坛上搜索过去的问题,但它似乎由于某些安全问题而被关闭。

【问题讨论】:

    标签: cuda nvidia raytracing optix


    【解决方案1】:

    你不能。当我想为我的应用程序这样做时,我在 NVIDIA OptiX 论坛上准确地问了这个问题(希望我能给你一个 http 指针)。不幸的是,OptiX 使用的 ptx 生成文件的一个限制是你不能在你传递的辐射射线中进行这种动态分配。

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

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

    【讨论】:

    • 谢谢,我有预感会是这样。
    • 顺便说一句,我们现在正在通过使用 3.0 中的 CUDA 上下文共享功能来解决这个问题。基本上,我们已经找到了一种方法,让 OptiX 进行光线追踪,而 CUDA 进行需要更灵活的动态分配而不是这种受限堆栈的计算。当然是 YMMV。
    猜你喜欢
    • 1970-01-01
    • 2020-12-25
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2020-03-30
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多