CrossRT: A cross platform programming technology for hardware-accelerated ray tracing in CG and CV applications

📄 arXiv: 2409.12617v1 📥 PDF

作者: Vladimir Frolov, Vadim Sanzharov, Garifullin Albert, Maxim Raenchuk, Alexei Voloboy

分类: cs.GR

发布日期: 2024-09-19


💡 一句话要点

提出CrossRT,实现跨平台硬件加速光线追踪编程技术

🎯 匹配领域: 支柱三:空间感知与语义 (Perception & Semantics)

关键词: 光线追踪 硬件加速 跨平台编程 代码生成 计算机图形学

📋 核心要点

  1. 现有光线追踪应用缺乏跨平台兼容性,开发者需针对不同硬件和API进行适配,工作量大。
  2. CrossRT通过硬件无关的C++算法描述,自动生成针对不同硬件加速器的代码,并提供软件回退。
  3. 实验表明,CrossRT在多种光线追踪任务上性能与专家编写的GPU实现相当,并优于现有路径追踪实现。

📝 摘要(中文)

我们提出了一种编程技术,它弥合了光线追踪应用中跨平台兼容性和硬件加速之间的差距。我们的方法允许开发者定义算法,而我们的转换器管理不同硬件或API的实现细节。其特点包括:从硬件无关的、面向对象的C++算法描述中生成硬件加速代码;允许用户为非硬件加速的CPU和GPU定义软件回退;生成类似于手动移植的C++版本的基于GPU编程API的算法实现。生成的代码是可编辑和可读的,允许进行额外的硬件加速。我们的转换器支持单巨内核和多内核路径追踪实现,而无需更改编程模型或输入源代码。Wavefront模式对于NeRF和SDF至关重要,确保使用多个内核进行高效评估。在BVH树构建/遍历、SDF的光线-表面相交、3D高斯溅射的光线-体积相交以及复杂路径追踪模型等任务上的验证表明,其性能水平与GPU的专家编写实现相当。我们的技术优于现有的路径追踪实现。

🔬 方法详解

问题定义:现有光线追踪应用开发面临跨平台兼容性挑战。开发者需要针对不同的硬件平台(如CPU、GPU)和API(如CUDA、OptiX、Vulkan)编写和优化代码,导致开发成本高昂,代码难以维护和移植。现有的解决方案通常依赖于特定的硬件或API,缺乏通用性和灵活性。

核心思路:CrossRT的核心思路是提供一种硬件无关的编程模型,允许开发者使用高级的、面向对象的C++语言描述光线追踪算法,而无需关心底层的硬件和API细节。CrossRT的转换器负责将这些高级描述自动转换为针对特定硬件平台的优化代码,从而实现跨平台兼容性和硬件加速。

技术框架:CrossRT的技术框架主要包括以下几个模块:1) 硬件无关的C++算法描述:开发者使用面向对象的C++语言描述光线追踪算法。2) CrossRT转换器:将C++算法描述转换为针对特定硬件平台的代码,包括CUDA、OptiX、Vulkan等。3) 软件回退:为不支持硬件加速的平台提供软件回退实现。4) 优化器:对生成的代码进行优化,以提高性能。整个流程是从高级算法描述到硬件加速代码的自动转换,并提供软件回退机制。

关键创新:CrossRT最重要的技术创新点在于其硬件无关的编程模型和自动代码生成能力。与现有的光线追踪解决方案相比,CrossRT允许开发者专注于算法本身,而无需关心底层的硬件和API细节,从而大大降低了开发成本和复杂度。此外,CrossRT还支持单巨内核和多内核路径追踪实现,以及Wavefront模式,进一步提高了性能和灵活性。

关键设计:CrossRT的关键设计包括:1) 使用面向对象的C++语言描述光线追踪算法,提供高级抽象和封装。2) 设计高效的转换器,将C++代码转换为针对特定硬件平台的优化代码。3) 实现软件回退机制,确保在不支持硬件加速的平台上也能运行。4) 支持单巨内核和多内核路径追踪实现,以及Wavefront模式,以提高性能和灵活性。具体的参数设置、损失函数、网络结构等技术细节未知,因为论文主要关注编程技术而非特定算法。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,CrossRT在BVH树构建/遍历、SDF的光线-表面相交、3D高斯溅射的光线-体积相交以及复杂路径追踪模型等任务上的性能水平与专家编写的GPU实现相当。此外,CrossRT在路径追踪任务上优于现有的路径追踪实现,具体性能提升数据未知。

🎯 应用场景

CrossRT可广泛应用于计算机图形学和计算机视觉领域,例如电影特效、游戏开发、科学可视化、医学图像处理、自动驾驶等。它降低了光线追踪技术的开发门槛,使得开发者能够更方便地利用硬件加速进行渲染和分析,从而提高效率和质量。未来,CrossRT有望成为光线追踪应用开发的重要工具。

📄 摘要(原文)

We propose a programming technology that bridges cross-platform compatibility and hardware acceleration in ray tracing applications. Our methodology enables developers to define algorithms while our translator manages implementation specifics for different hardware or APIs. Features include: generating hardware-accelerated code from hardware-agnostic, object-oriented C++ algorithm descriptions; enabling users to define software fallbacks for non-hardware-accelerated CPUs and GPUs; producing GPU programming API-based algorithm implementations resembling manually ported C++ versions. The generated code is editable and readable, allowing for additional hardware acceleration. Our translator supports single megakernel and multiple kernel path tracing implementations without altering the programming model or input source code. Wavefront mode is crucial for NeRF and SDF, ensuring efficient evaluation with multiple kernels. Validation on tasks such as BVH tree build/traversal, ray-surface intersection for SDF, ray-volume intersection for 3D Gaussian Splatting, and complex Path Tracing models showed comparable performance levels to expert-written implementations for GPUs. Our technology outperformed existing Path Tracing implementations.