Cuda/Optix是否提供硬件加速最小/最大光线投射?

Cuda/Optix是否提供硬件加速最小/最大光线投射?,cuda,nvidia,raycasting,optix,Cuda,Nvidia,Raycasting,Optix,我想知道,在Cuda或Optix中,是否有可能加速计算三维体积中从一点到另一点的直线/光线的最小值和最大值 如果没有,Nvidia GPU上是否有任何特殊硬件可以加速此功能(特别是在Volta GPU或Tesla K80上)?标题问题的简短回答是:是的,CUDA和OptiX中提供硬件加速光线投射。较长的问题有多种解释,因此我将尝试概述不同的可能性 我看到的问题的不同轴是:CUDA与OptiX,RTX前GPU与RTX GPU(例如,Volta与Ampere),最小光线查询与最大光线查询,以及可能的

我想知道,在Cuda或Optix中,是否有可能加速计算三维体积中从一点到另一点的直线/光线的最小值和最大值


如果没有,Nvidia GPU上是否有任何特殊硬件可以加速此功能(特别是在Volta GPU或Tesla K80上)?

标题问题的简短回答是:是的,CUDA和OptiX中提供硬件加速光线投射。较长的问题有多种解释,因此我将尝试概述不同的可能性

我看到的问题的不同轴是:CUDA与OptiX,RTX前GPU与RTX GPU(例如,Volta与Ampere),最小光线查询与最大光线查询,以及可能的曲面表示与体积表示

预RTX与RTX GPU:

也许可以说,与CPU相比,K80或GV100 GPU可用于加速光线投射,因为GPU具有高度并行的特性。但是,这些预RTX GPU没有任何专门用于光线投射的硬件。有些特殊用途的硬件并不专用于光线投射,您可能可以通过各种方式利用这些硬件,因此由您来确定和设计这些类型的硬件加速黑客

从图灵体系结构开始的RTX GPU确实有专门用于光线投射的专用硬件,因此它们加速光线查询的速度甚至比使用任何GPU并行光线查询的速度还要快

CUDA vs OptiX:

CUDA可以用于任何GPU上的并行光线跟踪,但它目前(在我写这篇文章时)不支持访问专门的RTX硬件进行光线跟踪。当使用CUDA时,您将负责编写所有代码以构建加速结构(例如BVH)并通过加速结构遍历光线,并且您需要编写相交和着色或命中处理程序

OptiX、Direct-X和Vulkan都允许您访问RTX GPU中的专用光线跟踪硬件。通过使用这些API,可以以较低的功率需求实现更高的速度,而且它们也需要更少的工作,因为为您提供了通过加速结构的交叉点和光线穿越。这些API还提供了生产级光线投射的其他常用功能,如实例化、变换、运动模糊,以及用于处理光线命中和未命中的单线程编程模型

最小与最大光线查询:

OptiX具有返回最接近光线原点的曲面交点的内置功能,即“最小查询”。OptiX没有为最远的交叉口提供类似的单一查询(我假设您所说的“max”就是这个意思)。要找到最大距离命中,或距离射线上第二个点最近的命中,需要跟踪多次命中,并跟踪所需的命中

在CUDA中,您可以自己检测最小和最大查询,因此只要您能够编写所有代码,您就可以做任何您想做的事情

曲面与体积:

你的问题提到了一个“3D体积”,它有多种含义,因此,为了澄清问题:

OptiX(+DirectX+Vulkan)是用于曲面(例如三角形网格)光线跟踪的API。RTX专业硬件专用于加速基于曲面表示的光线跟踪


如果“3D体积”指的是体积表示,如体素数据或四面体网格,则基于曲面的光线跟踪可能不是投射光线查询的最快或最合适的方式。在这种情况下,您可能希望在CUDA中使用“光线行进”技术,或者查看用于GPU(如NanoVDB)的体积光线投射API。

标题问题的简短回答是:是的,CUDA和OptiX中提供了硬件加速光线投射。较长的问题有多种解释,因此我将尝试概述不同的可能性

我看到的问题的不同轴是:CUDA与OptiX,RTX前GPU与RTX GPU(例如,Volta与Ampere),最小光线查询与最大光线查询,以及可能的曲面表示与体积表示

预RTX与RTX GPU:

也许可以说,与CPU相比,K80或GV100 GPU可用于加速光线投射,因为GPU具有高度并行的特性。但是,这些预RTX GPU没有任何专门用于光线投射的硬件。有些特殊用途的硬件并不专用于光线投射,您可能可以通过各种方式利用这些硬件,因此由您来确定和设计这些类型的硬件加速黑客

从图灵体系结构开始的RTX GPU确实有专门用于光线投射的专用硬件,因此它们加速光线查询的速度甚至比使用任何GPU并行光线查询的速度还要快

CUDA vs OptiX:

CUDA可以用于任何GPU上的并行光线跟踪,但它目前(在我写这篇文章时)不支持访问专门的RTX硬件进行光线跟踪。当使用CUDA时,您将负责编写所有代码以构建加速结构(例如BVH)并通过加速结构遍历光线,并且您需要编写相交和着色或命中处理程序

OptiX、Direct-X和Vulkan都允许您访问RTX GPU中的专用光线跟踪硬件。通过使用这些API,可以以较低的功率需求实现更高的速度,而且它们也需要更少的工作,因为为您提供了通过加速结构的交叉点和光线穿越。这些API还为生产级光线投射提供了其他常见的功能,如实例化、变换、运动模糊,以及proce的单线程编程模型