CUDA 和其他 OptiX 组件中固有的射线三角形相交

问题描述

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

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

解决方法

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

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

OptiX 降噪器也可以在完整管道之外使用。除此之外,着色器程序编译还需要管道,因此一旦您想跟踪任何光线,就需要管道。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...