3

有没有什么方法可以在不使用OptiX的情况下直接在CUDA中使用硬件加速的射线三角相交?这类似于如何在 CUDA 中直接使用张量核进行小矩阵乘法,请参阅https://developer.nvidia.com/blog/programming-tensor-cores-的 CUDA 9.0 中对张量核的编程访问部分cuda-9/ . 似乎这至少应该可以使用内联 PTX 以不受支持的方式实现(可能通过 OptiX 二进制文件的一些逆向工程)。

更一般地说,OptiX 的任何子组件是否可以在不使用完整管道的情况下使用?就像 OptiX 可以只用于生成单独使用的加速度数据结构吗?或者可以使用 RT 内核来遍历不是由 Optix 从设备代码中生成的自定义 BVH?

4

1 回答 1

1

在撰写本文时,还没有任何 PTX 或 CUDA 机制来访问 RT 内核。这并不意味着它在未来不能改变,但这就是它今天的立场。部分原因是因为 RT 核心查询不像矩阵乘法那样简单、有限、自包含的操作。直接访问 RT 内核可能比您想象的要复杂,这也是 OptiX / DXR / VKR 使用简化交互的 API 包装这些查询的部分原因。

OptiX 可以在完整管道之外生成加速结构,但由于格式是专有的(并且经常更改),它不能真正在光线追踪 API 之外使用或遍历。可以将 BVH 移动(“重新定位”)到主机或其他设备,但需要在目标设备上进行一些修补才能遍历它。数据传输的成本超过完整 BVH 重建的成本是很常见的,因此除了将要使用的设备之外,通常不会帮助任何地方创建 BVH。

OptiX 降噪器也可以在完整管道之外使用。除此之外,管道对于着色器程序的编译是必要的,所以一旦你想追踪任何光线,你就需要一个管道。

于 2021-04-22T17:12:02.557 回答