光线跟踪引擎做到了

    构建灵活软件系统的有效方法是通过嵌入式脚本语言使软件系统具有扩展性。TCL、Python 以及 Lua 等语言让程序员能够对许多软件 系统的行为进行安排和定制 – 例如,游戏大多由 C++ 编写,但通常会用 Lua 来实现人物及其他游戏机制的 AI(人工智能),并用 Python 代码通过协调 C++ 或 Fortran 库代码的执行来编写高性能计算应用程序。

    大多数嵌入式脚本语言都属于解释型语言,因此不适合用来实现性能关键的内部循环。此外,在许多注重性能的领域,通过核心系统与嵌入式语言之间的接口进行传递所带来的运行时开销多得难以接受,尤其是当需要进行频繁的转换时更是如此。因此,大多数以性能为导向的系统并没有在性能关键部分的核心领域提供可编程性的选项。

    然而,在图形领域,可编程的 高 性 能 光 栅 化 流 水 线 在 过 去的十年里一直是交互式渲染的核心 。 现 代 图 形 处 理 单 元 ( G P U )的 程 序 员 用 H L S L 或 G L S L等 基 于 C 的 语 言 编 写 “ 着 色器”,为流水线的内部循环提供代码。着色器的编程模型是数据并行型;此模型提供了丰富的并行性,可以很好地映射到底层的SIMD 硬件体系结构。虽然除图形领域以外,其他许多领域也都在使用可编程 GPU 以实现高性能计算,但能否针对 GPU构建可编程的高性能软件系统仍是个未知数。


   以下由 Parker 等人编著的这篇论文就将介绍如何在这样一种系统中让可编程性和高性能兼而有之。他们的系统 OptiX 所涉及的领域是适用于图像合成的交互式光线跟踪。光线跟踪是一种非常灵活的渲染方法,可以比光栅化更有效地模拟许多重要的照明效果,但它在交互式图形中的应用却受到了限制,直到最近 OptiX 的出现,而在此之前,在光线跟踪系统中,性能和灵活性始终无法兼得。


   作者为经典的光线跟踪算法开发了一套优雅的表达式,即每个阶段都从用户提供的代码进行组装的可编程数据流图。OptiX为各个阶段之间运行的核心几何和并行任务调度算法提供了高度优化的实现。与 GPU 光栅化流水线一样,程序员可以完全控制可编程性关键点的系统行为,而无需担心高性能 GPU 编程的细节。OptiX 对用户提供的内核使用 CUDA 语言;CUDA 提供了可在 GPU 上高效运行的数据并行编程模型。


   OptiX 消除了核心 OptiX 系统代码与用户代码之间的障碍,从而在保证性能的同时提供了可编程性。它对这两类代码都使用专用的 JIT 编译器,不仅允许在系统这两部分之间的边界中实现内联,而且允许常量传播和死代码消除,从而生成专用的系统版本。因此核心OptiX 系统可以提供最终可能不需要的功能;编译系统时会将此类功能的代码删除。该系统实现方法允许 OptiX用户实现 3D 场景中几何体的自定 义 表 示 方 法 和 算 法 , 以 模 拟照明和反射 – 在任何光线跟踪技术中,它们都是定制的关键领域。作者成功设计了正确的问题分解方法,这可说明用 OptiX 实现的光线跟踪应用的多样性,这些应用不仅仅包括渲染,甚至包括音频模拟和碰撞检测。所生成的系统非常接近于峰值效率,这使得 OptiX 迅速成为了大多数GPU 光线跟踪的标准基础。


   在 GPU 上引进可编程光栅化流水线的一个意想不到的成功,就是程序员在使用 GPU 光栅化流水线时所表现出来的创造性,他们使用的方式是原始设计者都未曾想到的。通过将灵活并且高性能的光线跟踪带给更多的开发人员,OptiX 很可能会以今天无法预测的方式点燃创新之火。
如果您关心如何编写可扩展的高性能软件系统,那么本文是您的必读之物。虽然本文的目标=硬件体系结构是 GPU,但基本思想同样适用于 CPU 上的高性能软件系统。今天,虽然 LLVM 等高质量编译器工具包使得以这种方式实现各种系统的门槛大大降低,但潜在的优势是巨大的。



Optix SDK 下载 4.1 . 1 Optix 4 现在 自由 使用 在 任何 应用 , 包括 商业 和 教育 应用 。 为 下载 你 必须 NVIDIA 这些 显影剂 - 。 通过 点击 "Agree & Download"按钮 , 确认 您 已 阅读 并 同意 遵守 软件 开发者 套件 、 采样 工具 和 许可 协议 用于 封装 的 SDK 使用 。 下载 将 开始 后 立即 点击 "Agree & Download"按钮 下方 。 Windows 7 和 更 高 、 64 位 同意 & 下载 Linux 接受 & 下载 Mac OSX 10.9 或 更 高 接受 & 下载 版本 说明 ( 615kB , PDF ) 版本 说明 Optix NVIDIA ® ™ 4.1 . 1 ( 2017 年 8 月 ) 欢迎 来到 的 第一个 重大 更新 的 Optix 4 SDK 。 Optix 4 是 发展 中 的 一个 重要 里程碑 Optix , 完全 重新 实现 的 核心 组件 , 包括 一个 全新 的 基于 LLVM 编译 流水线 。 重新 设计 内部 已经 酝酿 了 几年 , 人们 对 更好 的 总体 性能 、 多 GPU 缩放 , 调试 和 配置 、 以及 其他 特性 。 4 版本 保持 向 后 兼容 现有 的 Optix 应用 提供 的 API , 易于 使用 Optix 是 已知 的 。 Optix 4 现在 自由 使用 在 任何 应用 中 , 它 是 私人 或 商业 性质 , 而 无需 任何 额外 许可 或 批文 。 4.1 版本 是 一个 维护 版本 , 提供 性能 和 鲁棒性 的 改进 以及 最近 支持 CUDA 和 Visual Studio 版本 。 改进 4.1 . 1 主机 存储器 使用量 减少 场景 的 几何 形状 的 大量 实例 。 固定 一 臭虫 , 其 原始 索引 偏移 被 忽略 , 如果 一个 仅 包含 单个 geometrygroup geometryinstance 。 把 一 臭虫 固定 在 有 Optix 素数 的 最小 有效 位 的 浮点数 可以 命中 距离 确定性 的 三角形 中 的 一些 场景 , 根据 其 位置 在 BVH 中 。 所有 样品 使用 Optix CUDA SDK 主要 通过 默认 上下文 。 固定 的 场景 时 许多 材料 共享 geometryinstances 。 固定 内存 泄漏 在 GL Interop 破坏 缓冲器 修正 当 CUDA 计算 高速缓存 有时 没有 踢 中 , 导致 长 的 编译 时间 。 架构 更新 安装程序 以 在 安装 时 避免 安全 问题 的 SDK 。 改进 到 4.1 . 0 支持 CUDA 8.0 支持 Visual Studio 2015 年 建立 自己 的 SDK 各种 错误 修复 , 包括 更 坚固 的 节点 处理 复杂 图形 的 变化 在 某些 情况 下 , 内核 性能 更好 Optix 头 现在 nvrtc 兼容 , 与 运输 带 运行 时 编译 库 ( CUDA 阅读 更 多 ) 改进 4.0 . 2 新 的 EULA , 现在 允许 不 受约束 的 在 商业 应用 中 使用 Optix &bra; 黄金 &ket; Optix 和 几个 固定 的 问题 , 导致 使用 时 故障 trbvh 大 场面 修正 了 一个 问题 , 可能 导致 不必要 的 呼叫 重建 或 BVH 时 rtcontextsetentrypointcount rtcontextsetraytypecount 但 不 改变 表达式 的 值 修正 了 一个 问题 , 可能 会 导致 编译 错误 时 使用 的 不同 原子 类型 的 单个 节目 降低 的 存储器 要求 trbvh 当 使用 多个 改进 鲁棒性 Optix 上下文 &bra; 黄金 &ket; 修正 了 一些 在 内存不足 的 情况 下 RT _ 返回 ERROR _ UNKNOWN _ ERROR 代替 RTP 存储器 分配 失败 _ _ _ 改进 4.0 . 1 固定 “ 无效 设备 ” 错误 , 当 运行 在 某些 情况 下 , 在 GPU 帕斯卡 修正 了 某些 修改 可以 触发 断言 节点 图 修正 了 CPU 回退 的 trbvh 修正 了 一个 问题 , 可能 导致 损坏 输出 当 使用 3D 展开 当 使用 固定 的 性能 问题 的 实例 主要 对 Windows Optix 改进 编译 时 启用 Optix 例外 各种 改进 错误 消息 格式 的 半 添加 处理 rtugetsizeforrtfo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值